grep /egrep을 사용하여 두 따옴표 사이의 모든 탭 문자를 검색하는 방법

grep /egrep을 사용하여 두 따옴표 사이의 모든 탭 문자를 검색하는 방법

bash에서 grep /egrep을 사용하여 두 따옴표 사이의 모든 탭 문자를 찾습니다.

나는 노력했다

grep -r . -e "\".*\t.*\""
grep -r . -e "\".*\\t.*\""
grep -r . -e "\".*\\\\t.*\""
grep -r . -e '\".*\t.*\"'
grep -r . -e '\".*\\t.*\"'
grep -r . -e '".*\t.*"'
grep -r . -e '".*\\t.*"'

하지만 원하는 결과를 얻지 못합니다. 다음 은 다음 grep이 포함된 모든 행을 생성합니다 \t.

grep -r . -e "\".*\\\\t.*\""
grep -r . -e '\".*\\t.*\"'
grep -r . -e '".*\\t.*"'

다음 은 다음 grep이 포함된 모든 행을 생성합니다 t.

grep -r . -e "\".*\t.*\""
grep -r . -e "\".*\\t.*\""
grep -r . -e '".*\t.*"'
grep -r . -e '\".*\t.*\"'

그러나 이들 중 어느 것도 실제 표 작성 기계를 찾지 않습니다. 내가 뭘 잘못했나요?

답변1

GNU (당신이 사용하고 있다고 가정)는 grep기본적으로 \t탭에 대해 알지 못합니다. POSIX 정규 표현식에서는 \t리터럴이 일치 t하고 \\t일치합니다 \t.

텍스트 탭 문자를 POSIX 정규 표현식과 일치시키려면 표현식에 탭 문자를 삽입하십시오.

grep -r $'".*\t.*"' .

이는 문자열의 이스케이프 시퀀스를 C 언어의 해당 의미로 $'...'확장하는 데 사용됩니다 .bash

-PGNU에서 Perl과 유사한 정규 표현식(PCRE)을 활성화하면 표현식의 탭 문자를 grep인식합니다 .\t

grep -P -r '".*\t.*"' .

또한 귀하의 표현이 일치한다는 점에 유의하십시오.

"hello" <tab> "world"

관련 정보