이것은 부분적으로만 해결할 수 있는 숙제 문제입니다.
grep
나는 이 기능을 사용 하여 목록에서 't'로 구분된 세 개의 'e'가 포함된 단어를 찾고 악센트를 구분하지 않는 검색을 수행하고 싶습니다 .
정규식으로 얻을 수 있는 가장 가까운 것은 다음과 같습니다.
grep 'e.*t.*e.*t.*e' mylist
이에 대해 두 가지 질문이 있습니다.
- 이와 같은 패턴을 사용하여 악센트를 구분하지 않고 검색하는 방법을 이해할 수 없습니다. 최근에 동등 클래스 연산자에 대해 들어봤지만 검색 구문에 이를 포함시키는 방법을 모르겠습니다.
- 이 검색에서 얻은 일치 패턴에는 반복되는 "t"가 포함되지 않습니다.
답변1
e
정규식 엔진이 이를 지원하는 경우 기본적으로 문자를 동등한 클래스로 바꾸면 됩니다.[[=e=]]
전임자.
$ grep -m 10 '[[=e=]].*t.*[[=e=]].*t.*[[=e=]]' /usr/share/dict/french
absentéiste
absentéistes
anesthésiste
anesthésistes
cafés-théâtres
café-théâtre
casse-tête
centimètre
centimètres
centripète
바라보다시퀀스 및 해당 문자 대조