Shell-Script
從重複項中僅列印一個值
我在文件中有以下內容。
$ 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
有沒有辦法在文件中只保留一個重複元素並從列表中刪除剩餘的重複元素?另外,請記住,有些元素沒有任何重複項。
您可以在輸出中添加行號,
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
嘗試以下獲取文件的獨特元素
cat file.txt | sort | uniq
如果你想刪除重複項。然後你可以通過以下命令更新文件
cat file.txt | sort | uniq > file.txt
$$ NOTE: uniq only considers adjacent elements. That why we must sort the. $$