awk脚本匹配2个文件中的多个字段

awk脚本匹配2个文件中的多个字段,awk,Awk,你能帮我写一个awk脚本吗? 我有两个文件需要比较两个字段?例如: 文件1: 文件2: 我需要打印所有条目,其中file1的字段1与file2的字段1匹配,并且 同时,文件1的字段2与文件2的字段2不匹配。 例如,我需要获得以下行: asdf 1.1.1.1 -> 1.1.1.5 qwert 2.2.2.2 -> 2.2.2.5 提前谢谢 通常我不会对如此大胆的免费订单做出回应,但我很好奇,还是尝试了一下: $ awk 'NR==FNR{a[$1]=$2; next} a[$1]

你能帮我写一个awk脚本吗? 我有两个文件需要比较两个字段?例如:

文件1:

文件2:

我需要打印所有条目,其中file1的字段1与file2的字段1匹配,并且 同时,文件1的字段2与文件2的字段2不匹配。 例如,我需要获得以下行:

asdf 1.1.1.1 -> 1.1.1.5
qwert 2.2.2.2 -> 2.2.2.5 

提前谢谢

通常我不会对如此大胆的免费订单做出回应,但我很好奇,还是尝试了一下:

$ awk 'NR==FNR{a[$1]=$2; next} a[$1]!=$2{print $1,a[$1],$2}' file1 file2
asdf 1.1.1.1  1.1.1.5
qwert 2.2.2.2  2.2.2.5
输入

输出


唯一的问题是,它保持两个字段相同,但需要不同。我的意思是,目的是在第二个字段中查找不同但在第一个字段中相同的条目,即asdf 1.1.1->1.1.1。5@gregarah是的,对不起,我的错:后面的{action}部分有一个拼写错误,我把$I改为$1…@JamesBrown:Ha!我不会答应这么大胆的免费订单,这是你的典型++
asdf 1.1.1.1 -> 1.1.1.5
qwert 2.2.2.2 -> 2.2.2.5 
$ awk 'NR==FNR{a[$1]=$2; next} a[$1]!=$2{print $1,a[$1],$2}' file1 file2
asdf 1.1.1.1  1.1.1.5
qwert 2.2.2.2  2.2.2.5
$ cat f1
asdf 1.1.1.1
qwert 2.2.2.2
kjldjf 3.3.3.3
jkhkdhsfk 4.4.4.4

$ cat f2
asdf 1.1.1.5
qwert 2.2.2.5
kjldjf 3.3.3.3
jkhkdhsfk 4.4.4.4
$ awk 'FNR==NR{a[$1]=$2;next}$1 in a && $2!=a[$1]{print $1,a[$1],"->",$2}' f1 f2
asdf 1.1.1.1 -> 1.1.1.5
qwert 2.2.2.2 -> 2.2.2.5