나는 무엇을 해야할지 모르겠습니다. 나는 ~하려고 노력한다
egrep -i ^[^aeiou] [aeiou]$ /usr/share/dict/words
그러나 이것은 전혀 작동하지 않습니다. 내가 뭘 잘못했나요?
답변1
셸에서 표현식을 인용해야 합니다.
grep -i '^[^aeiou][aeiou]*$' /usr/share/dict/words
이렇게 하지 않으면 패턴이 현재 디렉터리에 있는 파일 이름으로 확장될 수 있습니다. 또한 패턴의 두 부분 사이에 공백을 삽입했기 때문에 grep
두 번째 부분은 검색해야 하는 파일 이름으로 간주됩니다("해당 파일 또는 디렉터리 없음" 오류가 발생함).
파일 /usr/share/dict/words
에는 한 줄에 하나의 단어가 있으므로 -x
필요에 따라 표현식에서 앵커를 사용하거나 제거할 수 있습니다.
grep -ix '[^aeiou][aeiou]*' /usr/share/dict/words
를 사용하면 -x
전체 grep
줄에 걸쳐 일치하는 항목만 반환됩니다.
만약 너라면필요하다[aeiou]*
모음(위의 내용은 빈 문자열과 일치 하므로 단일 자음 단어를 반환할 수 있음 ):
grep -ix '[^aeiou][aeiou][aeiou]*' /usr/share/dict/words
또는
grep -Eix '[^aeiou][aeiou]+' /usr/share/dict/words
답변2
다음을 수행해야 합니다.
- 정규식 인용
- 사이의 공백을 제거하십시오 (검색됩니다)
+
하나 이상의 모음과 일치하도록 a를 추가합니다 (정규식의 기능egrep
).
노력하다:
egrep -i '^[^aeiou][aeiou]+$' /usr/share/dict/words