保留第一个文件中与第二个文件不匹配的行

保留第一个文件中与第二个文件不匹配的行

我有2个文件,每个文件都有1000多行,

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"

我只想保留 file1 中最后一列“不”与 file2 最后一列匹配的行。我将不胜感激任何帮助。

我想要的输出

3.3    6.6    10    0    0.6    0.33    "Ha1_00044004__C"

答案1

您可以创建一个以第一个文件的最后一个字段为键的关联数组(或哈希),然后检查第二个文件的最后一个字段是否不是有效键:

$ 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

相关内容