複数ファイルを比較して、全てに共通した行のみを出力する
下記の3つのファイルの場合
file1
1 2 3 4 5
file2
7 6 5 4 3
file3
1 9 7 5 3
こんなものを出力
$ ./allcomm.sh file1 file2 file3 3 5
ソース
allcomm.sh
#!/bin/sh PREF=allcomm_tmp_sorted_ # 途中終了時のゴミ掃除 trap "rm -f $PREF*; exit 1" HUP INT QUIT TERM for filename in "$@" do # ソート済みのファイルをつくる sorted="$PREF""$filename" sort -u "$filename" > "$sorted" # 1週目 test ! -e tmp && cat "$sorted" > tmp # commで比べて共通行をtmpに出力 comm -12 tmp "$sorted" > _tmp mv _tmp tmp done rm "$PREF"* cat tmp rm tmp