使用awk比较文件中的两列

时间:2014-06-26 14:49:51

标签: shell awk scripting

例如,我在文件

中有如下数据
IP=0.0.0.0 FIRST=20140626 LAST=20140626

IP=1.1.1.1 FIRST=20140626 LAST=20140626

IP=2.2.2.2 FIRST=20140626 LAST=20140626

IP=3.3.3.3 FIRST=20140626 LAST=20140626

IP=4.4.4.4 FIRST=20140626 LAST=20140626

我需要比较每个IP的FIRST和LAST coulmn是否相同 我正在尝试使用awk来搜索FIRST和LAST模式

任何帮助非常感谢

4 个答案:

答案 0 :(得分:0)

不知道您的确切输出格式,这可能会有所帮助:

awk -F'[= ]*' 'NF{print $2, ($4!=$6?"not ":"")"same"}' file

以您的示例打印:

0.0.0.0 same
1.1.1.1 same
2.2.2.2 same
3.3.3.3 same
4.4.4.4 same

答案 1 :(得分:0)

您可以尝试使用此awk命令根据第一个和最后一个中的ip存在来打印Equal或不相等。

$ awk -F[\ \=] '!NF{next} { if($4==$6) {print "Equal"} else print "Not Equal"}' file
Equal
Equal
Equal
Equal
Equal

答案 2 :(得分:0)

这应该做:

awk -F ' |=' '$4==$6'

这有点像惯用语,它只会在$4=$6

时打印出来

答案 3 :(得分:0)

awk    '{split($1,i,"=");split($2,a,"=");split($3,b,"="); 
        if(a[2] == b[2]) print  i[2] " equal"; else print i[2]" not equal"; }' 
        input.txt

输出:

   0.0.0.0 equal
   1.1.1.1 equal
   2.2.2.2 equal
   3.3.3.3 equal
   4.4.4.4 equal

其中input.txt包含所需数据