UNIXでは、パターン間に存在する4番目のフィールドデータを合計します。

UNIXでは、パターン間に存在する4番目のフィールドデータを合計します。

私のデータが次のようになるとしましょう。

*dnet *1234 1.2 
1 port *12 2.3  
3 port1 *34 0.2 
7 *15 0.1 
*dnet *234 0.2 
2 *12 0.1 
4 *123 *234 1.2

フィールドはスペースで区切られます。

ここでは、各にある4番目のデータフィールドの合計を取得したいと思います*dnet。 4番目のフィールドデータがあるフィールドもあり、そうでないフィールドもあります。各個別の4番目のフィールドの合計値が必要です*dnet

試してみましawkたが入手できませんでした。誰でも助けてくれてありがとう。

上記の出力は次のとおりです。

*dnet *1234 1.2 2.5

*dnet *234 0.2 1.2

ベストアンサー1

$ awk '/dnet/{if (NR>1) print dnet, sum+0; dnet=$0; sum=0} {sum+=$4} END{print dnet, sum+0}' file
*dnet *1234 1.2  2.5
*dnet *234 0.2  1.2

おすすめ記事