
業務でシェルスクリプトを作成しています。
調べても分からないため力をお借りしたいです。
以下(表1)を
"AB" "EF"."GH" 12 1000を、実行します "AB" "EF"."IJ" 23 20を、実行します "QQ" GG 60 30を、実行します "CC" GG 70 40を、実行します "AS" CC 10 50を、実行します
このようにしたい(表2)のですが、
AB,EF,1020 QQ,GG,30 CC,GG,40 AS,CC,50
以下(表3)になってしまいます。
AB,EF,1020 QQ,GG,70 AS,CC,50
したいこととしては、
※★の部分が今回実現できずご質問させていただく部分です。
・第1.2.4フィールドのみ抜き出す(第4フィールドに関しては数字のみ抜き出す)
・1.2行目の第2フィールドの文字列として重複する部分(EF)は、一つとしてカウントしたい
・さらに第2フィールドの文字列として重複する部分(EF)以外は除外したい
・第4フィールドの数字は1.2行目足した数で出力させたい
・最後に、結果を「,」で区切りたい
★第4フィールドは、第1フィールドの文字列ごとに抽出したい。
↑私が実行したコマンドでは、表1上の第1フィールドのQQとCCは文字列が異なるため、それぞれ第4フィールドを出力させたいのですが、QQとCCが結合されてしまい、QQとCCの合計した数字が出力されてしまっています。
★第2フィールドで重複する部分については一つにまとめたいのですが、第1フィールドで重複する部分ではまとめたくない(それぞれ出力させたい)です。
実行したコマンドは、下記です。
awk -F '[ \t" ]+' -vOFS=, '{tag[$3]=$2;sum[$3]+=$(NF-1)}END{for(k in sum) print tag[k],k,sum[k]}'
説明が分かりにくく、すみませんがご教示いただけると嬉しいです。


回答1件
あなたの回答
tips
プレビュー