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:/export/rack131/srv13108
srv13407 f15001:/export/rack134/srv13407
srv13501 f13901:/export/rack135/srv13501
srv13501 f14001:/export/rack135/srv13501
srv13609 f14901:/export/rack136/srv13609
srv14407 f14101:/export/rack144/srv14407

我希望输出为:

srv13108 f15001:/export/rack131/srv13108
srv13407 f15001:/export/rack134/srv13407
srv13609 f14901:/export/rack136/srv13609
srv14407 f14101:/export/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 回答