-grep을 사용하여 'bar'로 시작하고 'i' 또는 'n'으로 끝나는 6개 문자 단어의 수를 계산합니다.

-grep을 사용하여 'bar'로 시작하고 'i' 또는 'n'으로 끝나는 6개 문자 단어의 수를 계산합니다.

'bar'로 시작하고 'i' 또는 'n'으로 끝나는 6글자 단어의 수를 세고 싶습니다.

예를 들어, 다음 파일이 제공됩니다.

barxxi
barxxc
barxxn
barqwq
barovo

다음 행이 일치하므로 출력은 2(정수)여야 합니다.

barxxi
barxxn

내 코드는 다음과 같지만 잘못된 것 같습니다.

grep -c 'bar??[ni]' /path/file.txt

답변1

grep -o필요한 경우 일치하는 텍스트만 한 줄에 여러 번 출력하려면 이 옵션을 사용합니다 .

grep -o '\<bar[^ ][^ ][ni]\>' /path/file.txt | wc -w

단어의 시작과 끝을 \<일치시킵니다 . 공백이 아닌 문자와 \>일치합니다 .[^ ]

답변2

물음표를 ?마침표로 바꾸면 .입력에 한 줄에 단어가 하나만 있는 한 grep이 작동합니다.

grep -c 'bar..[ni]' /path/file.txt

답변3

awk '{ for (i=1;i<=NF;i++) if ($i ~ /^bar.*[in]/ || $i ~ /[[:space:]]bar.*[in]/) { count++ }} END { print count }' filename

위의 awk 솔루션도 작동합니다. 각 줄의 여러 항목을 고려하여 패턴이 ~가 있는 정규 표현식과 일치하면 awk는 파일의 각 줄에서 공백으로 구분된 첫 번째 항목부터 마지막 ​​항목(NF)까지 찾아 그에 따라 개수를 증가시킵니다. 줄의 시작(^)과 막대, 공백 및 막대를 고려하는 두 개의 if 문을 만듭니다. 마지막으로 카운트가 화면에 인쇄됩니다.

관련 정보