0

質問に対する部分的な回答を見つけましたが、残りはわかりません。私はawkを使用しています。次のコマンドを使用して、元の行と重複する行を削除できます。

awk 'NR==FNR{a[$0]++;next} a[$0]<2' infile infile

ただし、これには行全体を複製する必要があります。列1で照合するときに、元の行と重複した行を削除する方法を知っている人はいますか?

私はこれを試しました

awk 'key[$1]; NR==FNR{a[$0]++;next} a[$0]<2' infile infile

しかし、それは私をどこにも連れて行きませんでした。次のタイプのデータを含むファイルがあります。

srv13108 f15001:/エクスポート/rack131/srv13108
srv13407 f15001:/エクスポート/rack134/srv13407
srv13501 f13901:/エクスポート/rack135/srv13501
srv13501 f14001:/エクスポート/rack135/srv13501
srv13609 f14901:/エクスポート/rack136/srv13609
srv14407 f14101:/エクスポート/rack144/srv14407

出力を次のようにしたい:

srv13108 f15001:/エクスポート/rack131/srv13108
srv13407 f15001:/エクスポート/rack134/srv13407
srv13609 f14901:/エクスポート/rack136/srv13609
srv14407 f14101:/エクスポート/rack144/srv14407

2行には一致する列1があったため。

4

1 に答える 1

5

awk オンラインが必要ですか?

awk '{a[$1]=$0;u[$1]++}END{for(i in u)if(u[i]==1)print a[i]}'  file

与えます:

srv13609 f14901:/export/rack136/srv13609
srv13108 f15001:/export/rack131/srv13108
srv13407 f15001:/export/rack134/srv13407
srv14407 f14101:/export/rack144/srv14407
于 2013-01-18T23:59:52.060 に答える