grep에서 고유한 결과만 찾습니다.

grep에서 고유한 결과만 찾습니다.

이 명령을 사용하여 파일에서 여러 단어를 찾습니다.

grep -iE "(foo|bar|test|something)" filename.txt

이것은 잘 작동하지만 발견된 단어의 모든 항목을 찾습니다. 예를 들어, foo8번 발견되면 8개의 결과가 모두 표시됩니다.

고유한 결과만 표시할 수 있나요? 어쩌면 첫 번째 것을 보여줄 수도 있습니다.

답변1

첫 번째 일치 항목만 표시하는 옵션이 있습니다. 관찰하다:

$ grep -iE "(foo|bar|test|something)" filename.txt
Foo 1
Bar 2
foo 3
Foo 4

이제 첫 번째 일치 항목으로 제한하려면 다음을 추가하세요 -m1.

$ grep -iEm1 "(foo|bar|test|something)" filename.txt
Foo 1

한 가지 제한 사항은 첫 번째 foo및 첫 번째 bar등이 아닌 첫 번째 일치만 표시한다는 것입니다.

여러 가지 일치 항목 중 첫 번째 항목을 인쇄합니다.

다음 테스트 파일을 고려해보세요.

$ cat filename.txt
Foo 1
Bar 2
foo 3
Foo 4
test 5
test 6

표시된 세 가지 정규식 각각의 첫 번째 항목을 인쇄하려면 다음을 수행하십시오.

$ awk -v a='[fF]oo [bB]ar [tT]est' 'BEGIN{split(a,b," ")} {for (i in b) if ($0~b[i] && !c[i]) {print; c[i]++}}' filename.txt
Foo 1
Bar 2
test 5

이는 일치시키려는 정규 표현식을 변수에 넣어 수행됩니다 a. a단어로 분할되어 배열에 배치됩니다 b. 의 각 정규식은 b각 줄에 대해 테스트되며 각 줄의 첫 번째 일치 항목만 인쇄됩니다.

관련 정보