2009-11-26

awkでファイル差分抽出

2つのファイルの差分を出力するawkを使ったtips。
diffコマンドでも差分は出せるけど、diffだと">"だとか、何行目と何行目を比較みたいなのが出てしまい。差分分を抽出して文字列いじりたいという時に、加工しなければいけない。(それ自体も大した加工ではないが。)面倒だから加工したくない場合or文字列変換がしずらいパターン用のtips。

awk 'BEGIN{FS= "\n"} NR==FNR{a[$1]=1;next}
{
if($1 in a)
print "" > "/dev/null"
else
print "$1" >> (出力ファイル)
fi
}' (比較ファイル1) (比較ファイル2)


awkは奥が深い。
注:フィールドセパレータが\n(改行)なので、改行もない0バイトファイルでは使えない。

0 件のコメント:

コメントを投稿