我找到了我问题的部分答案,但我无法弄清楚其余部分。我正在使用 awk。我可以使用以下命令删除原始行和重复行:
awk 'NR==FNR{a[$0]++;next} a[$0]<2' infile infile
Run Code Online (Sandbox Code Playgroud)
然而,这需要复制整条线。有谁知道在按第 1 列匹配时如何删除原始行和重复行?
我试过这个
awk 'key[$1]; NR==FNR{a[$0]++;next} a[$0]<2' infile infile
Run Code Online (Sandbox Code Playgroud)
但这并没有让我去任何地方。我有一个包含以下类型数据的文件:
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 列。
你需要在线awk吗?
awk '{a[$1]=$0;u[$1]++}END{for(i in u)if(u[i]==1)print a[i]}' file
Run Code Online (Sandbox Code Playgroud)
给出:
srv13609 f14901:/export/rack136/srv13609
srv13108 f15001:/export/rack131/srv13108
srv13407 f15001:/export/rack134/srv13407
srv14407 f14101:/export/rack144/srv14407
Run Code Online (Sandbox Code Playgroud)