2017-04-26 60 views
0

我的文件是這樣的:AWK了幾列

52.17.30.11 10.1.1.2 76 ACCEPT 
54.19.18.100 10.25.13.18 1140 ACCEPT 
10.25.13.136 10.24.13.166 275074 ACCEPT 
54.72.7.17 10.24.13.166 152 ACCEPT 

我想要做的AWK超過前兩個IP地址來識別其是否是互聯網,internal1或休息。在這種情況下,我希望得到這樣的結果:

Internet 10.1.1.2 76 ACCEPT 
Internet internal1 1140 ACCEPT 
internal1 10.24.13.166 275074 ACCEPT 
Internet 10.24.13.166 152 ACCEPT 

因此,如果這是10.25,這是internal1。否則,如果這是10.,這是「休息」,如果這是別的東西 - 這是互聯網

沒有問題,這樣做在第一IP:

cat x | awk -F. '{if($1 == 10 && $2 == 25) { print "internal1 " } else if($1 == 10) { print $0 } else {print "Internet "} 

然而,其結果必然是:

Internet 
Internet 
internal1 
Internet 

SO缺少的是1)各條線和2號的其餘第二IP

任何想法的)檢查?

回答

1

試試這個:

awk '{for (i=1;i<=2;i++) { 
    if ($i ~ /^10\.25\./) $i="internal1"; 
    else if ($i !~ /^10\./) $i="Internal"} }1' x 
+2

錯字,應該是'$ I = 「互聯網」'在3號線 – Sundeep