명령이 주어지면 자음으로 시작하고 모음만 뒤에 오는 파일을 grep합니다.

명령이 주어지면 자음으로 시작하고 모음만 뒤에 오는 파일을 grep합니다.

나는 무엇을 해야할지 모르겠습니다. 나는 ~하려고 노력한다

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

다음을 수행해야 합니다.

  1. 정규식 인용
  2. 사이의 공백을 제거하십시오 (검색됩니다)
  3. +하나 이상의 모음과 일치하도록 a를 추가합니다 (정규식의 기능 egrep).

노력하다:

egrep -i '^[^aeiou][aeiou]+$' /usr/share/dict/words

관련 정보