2017-08-31 18 views
0

Varlogは対応する放電イベントをINDUCTに見つけ、配列からこれを削除してみるという以前の問題を解決しました。これは、まだ目的地に排出されていないすべてのアイテムを私に残しました。GAWK出力をグループ化する

(下記)は、このスクリプトの出力

/REDIRECT_ITEM_REPLY/ { 
    match($0, /itemId=<([^>]+)>/, ary1) 
    match($0, /CscdestinationId=<([^>]+)>/, ary2) 
    dest[ary1[1]] = ary2[1] 
} 

/DISCHARGE_VERIFIED/ { 
    match($0, /itemId=<([^>]+)>/, ary1) 
    delete dest[ary1[1]] 
} 

END { 
    for (id in dest) { 
     print dest[id] 
    } 
} 

OUTPUT:

CHU207 - 5 
CHU001 - 10 
FLY437 - 3 

私が考えていた:私はのようなものにGROUPこの情報をしたいと思います

17: CHU207 
17: CHU207 
35: CHU214 
1: CHU001 
157: FLY437 
115: FLY424 
108: FLY321 

UNIQコマンドを使用して、これをスクリプトに組み込む方法を疑問に思っただけで、 P私はあなたが必要としないuniqの-cを使用して、コマンドラインのアプローチを試みたが、わからない、これが最善のアプローチであれば

gawk -f inductedNEW.awk item1.log | uniq -c 

あなたの助けに感謝

フィル

+0

出力は要件を満たしていますか?そうであれば、これはUNIX/Linux環境での「最良の」アプローチであり、特殊なプログラムへのパイプデータは「良いもの」とみなされます。しかし、これは本当にオフトピックQであるので、「意見に基づいた」として閉じることに投票する。 http://stackoverflow.com/help/how-to-ask、http://stackoverflow.com/help/dont-ask、http://stackoverflow.com/help/mcveを読んで[ツアー]( http://stackoverflow.com/tour)よりQを投稿してください。 幸運。 – shellter

+0

シェルター、あなたのフィードバックに感謝します。 – Fabby

+0

'gawk'は単に' awk'の実装です。あなたが 'gawk'に加えて' awk'であなたの質問にタグを付けると、あなたはそれらを読んでいる人々を大幅に増やし、すぐに複数の答えを得るでしょう。 –

答えて

0

いる

パイプはこちら。あなたはあなたのawkプログラムに必要なものすべてを持っています。

変更スクリプトの端部に:

END { 
    print "Detail:" 
    for (id in dest) { 
     print dest[id] 

     group=dest[id];    # group = "123: ABC" 
     sub(/^[0-9]+: */, "", group); # group = "ABC" 
     groupCounter[group]++;  # counter++ 
    } 
    print "Grouped:" 
    for(group in groupCounter) { 
     print group " - " groupCounter[group] 
    } 
} 

あなたはそれを削除し、詳細部分を必要としない場合。

関連する問題