단어를 찾기 위한 grep 패턴 구문

단어를 찾기 위한 grep 패턴 구문

내 첫 이니셜이 반드시 연속적으로 나타나지 않는 모든 단어를 찾으려고 노력하고 있습니다.

내 첫 번째 이니셜은 단어로 시작되어야 합니다.

내 마지막 이니셜은 단어를 끝내야 합니다.

내 중간 이니셜은 단어 사이에 있어요

암호:

grep '^j.*x$' file

(j는 첫 번째 초성, t는 중간 단어, x는 단어의 끝)

답변1

글쎄, 당신은부터 시작할 것입니다

j.*t.*x

하지만 이 .*비트는 일치합니다.아무것. 따라서 문자만 일치하도록 다음 부분을 제한하십시오.

j[[:alpha:]]*t[[:alpha:]]*x

이것은 [[:alpha:]]POSIX 문자 클래스입니다.와 동일합니다 [A-Za-z]. 즉, 임의의 알파벳 문자입니다.

이것이 당신의 패턴입니다. 그런 다음 grep완전한 단어만 반환하도록 정중하게 요청하세요. 옵션을 사용하여 이를 수행할 수 있습니다 -w. 이렇게 하면 단어가 아닌 문자(예: 공백) 또는 줄의 시작이나 끝으로 구분된 각 줄의 하위 문자열로 일치 항목이 제한됩니다.

-i대소문자를 구분하지 않고 일치하려면 추가하세요.

전체 라인이 아니라 실제로 패턴과 일치하는 각 라인의 비트만 원하는 경우 추가로 사용하십시오 -o.

당신은 결국 얻을 것이다

grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x'

시험:

$ grep -i -o -w 'j[[:alpha:]]*t[[:alpha:]]*x' /usr/share/dict/words
janitrix

관련 정보