データを含むファイルがありますが、awkを介して実装したいと思います。どうすればいいですか?
111,10.1.1.1,,20
111,10.1.1.1,21,
112,10.1.1.2,10,
112,10.1.1.2,,15
予想出力:
111,10.1.1.1,21,20
112,10.1.1.2,10,15
ベストアンサー1
努力する:
$ awk -F',+' '{a[$1","$2]=a[$1","$2]","$3} END{for (ip in a)print ip a[ip]}' file | sort
111,10.1.1.1,20,21
112,10.1.1.2,10,15
どのように動作しますか?
-F',+'
これは awk に、1 つ以上のコンマで構成される任意のシーケンスをフィールド区切り文字として使用するように指示します。
a[$1","$2]=a[$1","$2]","$3
a
各行に対して、最初の2つのフィールドのキーの下にある連想配列の項目に3番目のフィールドを追加します。END{for (ip in a)print ip a[ip]}
ファイルの終わりに達すると、配列の各キーを印刷し、その後に
a
そのキーの値を印刷します。a
sort
このオプションのステップは出力をソートします。ソートが重要な場合は、
sort
目的の結果(語彙対数など)を得るためにオプションを調整する必要があります。