kuroの覚え書き

96の個人的覚え書き

データの抽出作業でuniqをつかう

uniqは便利なコマンドなんだけど、OSXにプリインストールされているuniqはBSD版で機能がちょっと物足りない。他にもBSD版コマンドはちょくちょくGNU/Linux版と違うことがあるので、この際ということでGNU版をインストールしてしまうことにした。

例によってHomebrewでいけるようで、

$ brew install coreutils

これでよい。
.bashrcにパスを追加してやれば、関連コマンドがGNU版に置き換えられて実行される。

export PATH=/usr/local/opt/coreutils/libexec/gnubin:${PATH}
export MANPATH=/usr/local/opt/coreutils/libexec/gnuman:${MANPATH}

さて、2つのファイルから行頭の指定14文字が一致する行を取り出し、3カラム目だけが欲しいので

$ cat anno.txt 1.txt | sort | uniq -d -w 14 | awk '{OFS="\t"; {print $3}}' > anno_list.txt

このような感じでやると無事に抽出が完了した。BSD版だと-wオプションが使えないのよね。