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オプションが使えないのよね。