如果第一列中的值匹配,而第二列中的值与bash中另一个文件中的值不匹配,则提取行

如果第一列中的值匹配,而第二列中的值与bash中另一个文件中的值不匹配,则提取行,bash,Bash,我有两个不同的文件,看起来像这样 61435320 rs10000085 12984967 rs10000091 32039123 rs10000150 这是: 61435320 rs12958 12984967 rs10000091 32039123 rs37892 我只想提取与第一个字段匹配但与第二个字段不匹配的行 因此,我想要的输出看起来就像我只想要第一个字段: 61435320 32039

我有两个不同的文件,看起来像这样

 61435320        rs10000085
 12984967        rs10000091
 32039123        rs10000150
这是:

 61435320        rs12958
 12984967        rs10000091
 32039123        rs37892
我只想提取与第一个字段匹配但与第二个字段不匹配的行

因此,我想要的输出看起来就像我只想要第一个字段:

61435320
32039123
我已经尝试了由提供的解决方案,但不幸的是,它对我不起作用,我想这不正是我想要的


非常感谢您:假设您的文件名为a和b,您可以这样做:

join a b | awk '{if ($2!=$3){print $1}}'
join <(sort a) <(sort b) | awk '{if ($2!=$3){print $1}}'
如果文件排序不正确,则join可能存在问题。您可以按如下方式对它们进行排序:

join a b | awk '{if ($2!=$3){print $1}}'
join <(sort a) <(sort b) | awk '{if ($2!=$3){print $1}}'
仅适用于awk:

awk -v'f=file2' '{if((getline b<f)>0)$0=$0 b}$1==$3 && $2 != $4{print $1}' file1

不管谁投了反对票。。。能解释一下原因吗?我是新来的,我想知道如何正确处理事情!提前感谢!