grep을 사용하여 특정 단어 발생 횟수를 검색하는 방법

grep을 사용하여 특정 단어 발생 횟수를 검색하는 방법

파일에서 "x"로 시작하고 그 뒤에 최소 1개의 "a"가 있고 "a" 뒤에 최대 2개의 "a"가 오는 텍스트를 검색하는 방법입니다.

나는 다음과 같은 것을 시도했습니다

grep -i ^xa{1..2} textfile.txt

하지만 그 사용법을 이해하지 못하는 것 같습니다.

답변1

$ cat ip.txt 
xe
xa
xaaaalt
xaaa
xaa

$ # match 'a' 1 to 3 times
$ grep -i '^xa\{1,3\}' ip.txt
xa
xaaaalt
xaaa
xaa

$ # with ERE, no need to escape {}
$ grep -iE '^xa{1,3}' ip.txt
xa
xaaaalt
xaaa
xaa

3개 이상의 연속 일치를 방지하려면 a다음이 필요합니다.

$ grep -iE '^xa{1,3}([^a]|$)' ip.txt
xa
xaaa
xaa

$ # or lookarounds with PCRE
$ grep -iP '^xa{1,3}(?!a)' ip.txt
xa
xaaa
xaa

답변2

거의 완료되었습니다:

grep -i -E '^xaa{0,2}' textfile.txt

구문 {n,m}(with ,및 not ..)은 확장 정규식이므로 -E옵션입니다. {그리고 }쉘이 이를 해석하지 못하도록 인용해야 합니다.

답변3

주어진 입력

1       x
2       xa
3       xaa
4       xaaa
5       xaaaa

2, 3, 4행은 명령에 의해 반환됩니다.

grep -wE 'xa{1,3}'

확장 정규식은 1 과 3 사이의 모든 항목 xa{1,3}과 일치합니다 . 입력에서 일치하는 텍스트가 완전한 단어인지 확인하는 옵션입니다(이것이 5행이 반환되지 않는 이유입니다).xa-wgrep

관련 정보