grep을 사용하여 단어 구조 검색

grep을 사용하여 단어 구조 검색

일부 영어 단어에는 "tomorrow" 또는 "better"와 같은 "abba" 구조가 포함되어 있습니다. 주어진 파일에서 그러한 단어가 포함된 줄은 몇 개입니까? grep을 사용하여 이러한 단어를 어떻게 검색합니까?

답변1

GNU grep으로 이것을 시도해 보세요:

grep '\(.\)\(.\)\2\1' file | wc -l

답변2

어울리는 패턴을 찾고 계시다면회문- 또는 같은 단어를 앞뒤로 철자하는 경우 - GNU 페이지를 열고 다음을 찾을 수도 grep있습니다 info grep.

Guglielmo Bondioni는 최대 19자 길이의 모든 회문을 찾기 위해 9개의 하위 표현식과 9개의 역참조를 사용하는 RE를 제안했습니다.

grep -xE '(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?).?\9\8\7\6\5\4\3\2\1'

이는 GNU ERE 확장을 사용하여 수행되며 다른 구현으로는 이식할 수 없습니다 grep.

...이제 일치합니다아바, 하지만tomorrow또는better이 두 단어는 둘 다 아니기 때문에회문.

이식성에 대한 참고 사항은 특히 확장된 정규식 패턴에서 역참조를 사용하는 것을 의미한다고 생각합니다. \{0,1\}완전히 이식 가능한 표현식 모드를 얻으려면 각 물음표를 대체하려면 더 많은 백슬래시와 a가 필요하다고 생각합니다.

답변3

grep -xE '.+(.)(.)\2\1.+'
grep -xE '(.)(.)\2\1'

관련 정보