2番目のファイルと一致しない最初のファイルの行を保持する

2番目のファイルと一致しない最初のファイルの行を保持する

それぞれ1000行を超えるファイルが2つあります。

head file 1


3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"
0      0       0   10     0       1     "Ha1_00043486__A"
3.3    6.6    10    0    0.6    0.3     "Ha1_00045379__C"
3      6       9    1    0.6    0.4     "Ha1_00045316__C"

head file 2
0    0    0    10    0    1     "Ha1_00043486__A"
0    0    0    10    0    1     "Ha1_00043840__A"
0    0    0    10    0    1     "Ha1_00043671__A"
0    0    0    10    0    1     "Ha1_00044403__A"
3.3    6.6    10    0    0.6    0.3     "Ha1_00045379__C"
3      6       9    1    0.6    0.4     "Ha1_00045316__C"

最後の列がfile2の最後の列と「一致しない」file1の行だけを維持したいと思います。助けてくれてありがとう。

私が望む出力

3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"

答え1

最初のファイルの最後のフィールドをキーとして連想配列(またはハッシュ)を作成し、2番目のファイルの最後のフィールドが有効なキーではないことを確認できます。

$ awk 'NR==FNR {a[$NF]++; next} !($NF in a)' file2 file1
3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"

答え2

努力する:

grep -vf <(awk '{print $7}' < file2) file1

関連情報