![仅打印重复项中的一个值](https://linux22.com/image/179780/%E4%BB%85%E6%89%93%E5%8D%B0%E9%87%8D%E5%A4%8D%E9%A1%B9%E4%B8%AD%E7%9A%84%E4%B8%80%E4%B8%AA%E5%80%BC%20.png)
我的文件中有以下内容。
$ cat file.txt
code-coverage-api
jsch
cloudbees-folder
apache-httpcomponents-client-4-api
apache-httpcomponents-client-4-api
jsch
apache-httpcomponents-client-4-api
jsch
apache-httpcomponents-client-4-api
jackson2-api
apache-httpcomponents-client-4-api
workflow-api
echarts-api
workflow-api
envinject-api
workflow-durable-task-step
apache-httpcomponents-client-4-api
我的预期输出是:
code-coverage-api
jsch
cloudbees-folder
apache-httpcomponents-client-4-api
jackson2-api
workflow-api
echarts-api
envinject-api
workflow-durable-task-step
目前,我正在对内容进行排序,如下所示,然后手动删除重复项(除了一个元素)。
$ cat file.txt |sort
有没有一种方法可以在文件中仅保留一个重复元素并从列表中删除剩余的重复元素?另外,请记住,有些元素没有任何重复项。
答案1
您可以将行号添加到输出中,cat -n
然后在第二个字段上进行唯一排序。
然后对第一个字段进行数字排序以保留原始顺序并使用以下命令删除行号cut
:
$ cat -n file.txt | sort -uk2,2 | sort -nk1,1 | cut -f2
code-coverage-api
jsch
cloudbees-folder
apache-httpcomponents-client-4-api
jackson2-api
workflow-api
echarts-api
envinject-api
workflow-durable-task-step
答案2
尝试以下操作来获取文件的唯一元素
cat file.txt | sort | uniq
如果你想删除重复项。然后你可以通过以下命令更新文件
cat file.txt | sort | uniq > file.txt
[注意:uniq 仅考虑相邻元素。这就是为什么我们必须对它们进行排序。]