ファイルのパース
10 abc 20 abcc 30 abcd 40 xycz 42 wxy 5 abc 20 abcd 30 abcc
というファイルがあり、最初のステップで以下のようにします。
"abc" - 10 "abcc" - 20 "abcd" - 30 ...
次のステップで
"abc" 10 - 5 = "abc" 5 "abcc" 20 - 30 = "abcc" -10
のようにしたいそうです。
回答は以下のとおりです。
awk '{a[$2]=(a[$2]=="" ? $1 : a[$2] - $1)} END{for (i in a) print i,a[i] }
{ if (a[$2]=="") { a[$2] = $1 } else { a[$2] = a[$2] - $1 print $2, a[$2] a[$2]=""} }
{ if (a[$2]=="") { a[$2] = $1 } else { a[$2] = a[$2] - $1 print $2, a[$2] a[$2]=""} } END { for (i in a) { if(a[i]!=""){ print i,a[i] } } }
$2 in a { print $2, a[$2] - $1; delete a[$2]; next } { a[$2] = $1 } END { for (i in a) print i, a[i] }