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

时间:2017-03-14 11:21:30

标签: awk

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

文件1:

asdf 1.1.1.1
qwert 2.2.2.2
kjldjf 3.3.3.3
jkhkdhsfk 4.4.4.4

file2的:

asdf 1.1.1.5
qwert 2.2.2.5
kjldjf 3.3.3.3
jkhkdhsfk 4.4.4.4

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

asdf 1.1.1.1 -> 1.1.1.5
qwert 2.2.2.2 -> 2.2.2.5 

提前感谢!

2 个答案:

答案 0 :(得分:2)

通常情况下,我不会回答这么大胆的免费订单,但我很好奇并尝试了它:

$ 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

答案 1 :(得分:1)

<强>输入

$ 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