길이가 10자이고 세 개의 연속 모음으로 구성된 하위 문자열을 포함하는 단어 집합입니다. 나는 지금까지 이러한 명령을 시도했습니다.
grep -E '^.{10}$'| grep 'a*.e*.i*.o*.u*' words2.txt
grep -E '^.{10}$&a*.e*.i*.o*.u*' words2.txt
OCR을 통해 데이터 입력 및 추출이 스크린샷:
unpernicious
unperspicuous
unpervious
unpious
unpiteous
unpiteously
unpiteousness
unplebeian
unplenteous
unportmanteaued
unportuous
unprecarious
unprecious
unprecocious
unpredacious
unpresumptuous
unpresumptuously
unpretentious
unpretentiously
unpretentiousness
unpromiscuous
unpropitious
unpropitiously
unpropitiousness
unpugnacious
unpunctilious
unquailed
unquailing
unquailingly
unqueen
unqueened
unqueening
unqueenlike
unqueenly
unquiescence
unquiescent
unquiescently
unquiet
unquietable
unquieted
unquieting
unquietly
unquietness
unquietude
unrapacious
unrebellious
unreligious
unreligiously
unreligiousness
unrighteous
unrighteously
unrighteousness
unsacrilegious
Unsagacious
unsalubrious
unsanctimonious
unsanctimoniously
unsanctimoniousness
unsanguineous
unsanguineously
unseditious
unseeable
unseeing
답변1
귀하의 질문(IMHO)은 으로 가장 잘 해결되지만 awk
귀하의 명령에 한 가지 문제를 지적하고 싶습니다.
grep -E '^.{10}$'| grep 'a*.e*.i*.o*.u*' words2.txt
word2.txt
두 번의 호출로 파일의 내용을 필터링하려면 grep
다음과 같아야 합니다.
grep -E '^.{10}$' words2.txt | grep 'a*.e*.i*.o*.u*'
두 번째 모드 는 다음과 같아야 grep
합니다 .[auoie]{3}
grep -E '^.{10}$' words2.txt | grep -E '[aouie]{3}'
첫 번째 항목에 대한 입력은 grep
파일입니다. 두 번째의 입력은 grep
첫 번째의 출력입니다 grep
.아니요당신의 파일.
POSIX 사용 awk
(최신 버전의 GNU와 유사 awk
):
$ awk 'length == 10 && /[aouei]{3}/' words2.txt
unpervious
unplebeian
unportuous
unprecious
unquailing
unqueening
unquieting
unquietude
mawk
, BSD awk
및 과거 POSIX 구현은 정규식을 awk
지원하지 않았습니다 .{n}
스테판 차젤라스는 다음과 같이 지적합니다..
답변2
10자를 정확하게 추측했지만 연속된 모음 3개를 찾으려면 다음 그룹을 찾으세요 [AEIOU]
.
egrep '^.{10}$' | egrep -i '[AEIOU]{3}'
공백을 거부하려면 다음 명령을 사용하십시오.
egrep '^[^ \t]{10}$' | egrep -i '[AEIOu]{3}'
답변3
1개의 단어/라인을 가정하면 다음과 같이 할 수 있습니다.
sed -nE '/^.{10}$/!d;/[aAeEiIoOuU]{3}/p' words.txt
답변4
내장형 grep
PCRE 지원:
grep -iPx '(?=.*[aeiou]{3}.*).{10}'
또는:
grep -wiP '(?=\w*[aeiou]{3}\w*)\w{10}'
한 줄에 하나가 아닌 경우 이러한 단어를 검색합니다( 구현에서 해당 단어가 있는 전체 줄을 인쇄하는 대신 일치하는 단어만 인쇄하도록 지원하는 -o
경우 추가). grep
거기단어임의의 시퀀스를 나타냅니다.단어문자(문자(라틴어 스크립트에서는 발음 구별 부호만 제외, (*UCP)
모든 스크립트의 문자에 a를 추가하지만 é
또는 같은 모음은 제외 α
), 숫자 및 밑줄).