印刷時に細かい違いで線を区切りたいです。 (差=$2-$3)
入力ファイルは次のとおりです。
c1,5,2 <-- diff=3
c1,5,3 <-- diff=2
c1,5,1 <-- diff=4
c2,8,3 <-- diff=5
c2,8,4 <-- diff=4
予想される出力は次のとおりです。
c1,5,3
c2,8,4
awkを使用してこれを行うにはどうすればよいですか(例:1行のコードを使用)。
つまり、最初のフィールド値(c1、c2)ごとに、最初のフィールド値を含む単一行を印刷したいとします。これは、選択された2番目のフィールドと3番目のフィールドの最小差です。
ベストアンサー1
楽しむアッ解決策:
awk -F, '{ diff=$2-$3; if(a[$1]>diff || !a[$1]) { a[$1]=diff; b[$1]=$2 FS $3 } }
END{ for(i in a) print i,b[i] }' OFS=',' yourfile
出力:
c1,5,3
c2,8,4