grep 출력에서 ​​고유 한 결과를 어떻게 필터링 할 수 있습니까?


75

리눅스에서는을 사용하여 파일에서 문자열을 grep 할 수 있습니다 grep mySearchString myFile.txt. 고유 한 결과 만 얻으려면 어떻게해야합니까?

답변:


125

sortuniq유틸리티를 사용 하여이 작업을 수행 할 수 있습니다 .

예:

[john @ awesome ~] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest"
테스트
테스트
테스트
다른 테스트
테스트
[john @ awesome ~] $ echo -e "test \ ntest \ ntest \ nanother test \ ntest"| 정렬 | 유니크
다른 테스트
테스트

데이터에 따라 일부 스위치를 활용할 수도 있습니다.


9
@ 존 T는 - 내가 사용하는 것이 좋습니다 것입니다 sort전에 uniq경우 데이터가 정렬되지 않습니다. 그렇지 않으면 uniq완전히 작동하지 않습니다.
Studer

지금은 공감 할 수 있습니다! 또한 다른 스크립트를 작성하는 데 도움을주었습니다.;)
Studer

42
sort -u대신에 사용하십시오 sort | uniq. 프로세스를 저장하고 총 I / O를 줄이며 총 비교 횟수를 줄입니다.
Chris Johnsen

@ChrisJohnsen 당신은 그 해답이 현재 주어진 해답보다 더 나은 해결책이므로 해답을 만들어야합니다
Nico Van Belle

1

당신이 사용할 수있는:

grep -rohP "(mySearchString)" . | sort -u

-r : 재귀

-o : 텍스트의 일치하는 부분 만 인쇄

-h : 파일 이름을 인쇄하지 않습니다

-P : Perl 스타일 정규식 (경우에 따라 -E를 대신 사용할 수 있음)

sort -usort | uniq@Chris Johnsen이 지적했듯이 보다 낫습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.