파일에서 "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행이 반환되지 않는 이유입니다).x
a
-w
grep