내 파일에 다음 내용이 있습니다.
$ 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는 인접한 요소만 고려합니다. 이것이 바로 우리가 그것들을 분류해야 하는 이유입니다. ]