AWKは

2017-04-26 4 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 

私は、彼らがインターネット、internal1または休息しているかどうかを認識するために最初の二つのIPアドレス上AWKをしたいと思います。この場合、私はこの結果を取得したいのですが:

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 "} 

しかし、結果は次のようになります。

各ラインと第二の第一)残りは第二IP

すべてのアイデアは、の)チェック

Internet 
Internet 
internal1 
Internet 

SO何が欠けているのですか?

答えて

1

これを試してみてください。

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

タイプミス、3行目に '$ I = "インターネット"'でなければなりません – Sundeep