Shell-Script

從重複項中僅列印一個值

  • September 6, 2020

我在文件中有以下內容。

$ 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. $$

引用自:https://unix.stackexchange.com/questions/608124