d(대문자 또는 소문자)로 시작하고 그 뒤에 y를 포함한 소문자 모음이 오고 s로 끝나는 5개의 문자 단어 목록을 찾아야 합니다. 내 명령: grep -i '^d[aeiouy]....s$' 파일 이름. '가 포함된 단어를 목록에서 제외하고 싶은데 명령을 어떻게 작성해야 할지 모르겠습니다.
답변1
당신은 매우 가깝습니다. 그것은해야한다
grep -i '^d[aeiouy].[^']s$' file
문자가 너무 많아 .
마지막 문자에서 두 번째 문자를 제외하려고 합니다 '
. 각각은 .
캐릭터의 자리 표시자라는 점을 기억하세요. 단어가 실행 중인 텍스트에 있는 경우 단어 구분 기호로 선택할 수 있지만 \<
사용해야 \>
할 수도 있습니다 egrep
. 실행 중인 텍스트에서 기준과 일치하는 모든 단어를 추출하려면 다음을 사용해야 합니다.
sed 's/[[:space:]][[:space:]]*/\
/g' foobar | grep "^[dD][aeiouy].[^']s$"
sed
한 줄의 모든 단어를 개별적으로 구분할 수 있습니다. \
첫 번째 줄 뒤의 개행 문자에 유의하세요 .
답변2
앵커 포인트를 방지하려면 옵션을 ^$
사용할 수 있습니다 -x
.
d
대문자 또는 소문자일 수 있지만 모음만 소문자인 경우 앞의 기호가 구두점이나 공백이 아님을
\B
의미합니다 .null inside of word
grep -x '[Dd][aeiouy]..\Bs' file
답변3
다음을 시도해보세요: grep -i "^d[aeiouy]...[^']s$" <file name>
. '
마지막 위치의 문자를 제외합니다 .