특정 문자가 포함된 파일의 단어 수 확인

특정 문자가 포함된 파일의 단어 수 확인

문자 "a"가 포함된 파일의 단어 수를 확인하는 Bash 명령

답변1

다음 테스트 파일이 있다고 가정해 보겠습니다.

$ cat file
the cat in the hat
the quick brown dog
jack splat

grepGNU 확장 구현을 채택 함으로써 -o다음을 포함하는 모든 단어를 검색할 수 있습니다 a.

$ grep -wo '[[:alnum:]]*a[[:alnum:]]*' file
cat
hat
jack
splat

우리는 다음 단어들을 셀 수 있습니다:

$ grep -wo '[[:alnum:]]*a[[:alnum:]]*' file | wc -l
4

답변2

POSIX적으로:

<file tr -s '[:space:]' '[\n*]' | grep -c a

여기,성격공백이 아닌 문자의 시퀀스입니다.

답변3

이것이 Perl 방식입니다:

 perl -0lnE 'say scalar grep(/a/,split(/\s/,$_));' file

또 다른 방법이 있습니다 awk:

 awk '{for(i=1;i<=NF;i++){if($(i)~/a/){k++}}}END{print k}' file

답변4

awk 'BEGIN{RS="[[:space:][:punct:]]"; c=0}
     index($0,"a"){c++} 
     END{print c}'

awk여러 문자를 지원하는 버전을 사용하세요오른쪽에코코드에스구분 기호( )는 GNU awk처럼 각 레코드가 한 단어를 읽 RS도록 할 수 있습니다 .awk

이 기록에는index(in, string)기능 검색in처음으로string, 그리고 반환1을 기본으로문자 위치를 찾으세요. 찾을 수 없으면 index()반환0. 따라서 반환 값은 부울 조건 테스트(0 = false, 0이 아님 = true)로 볼 수 있습니다. 이는 정규식 검색이 아닙니다.

일치하는 항목이 발견되면 변수가 1( ) c씩 증가합니다 .c++

c=0블록은 절대 증가하지 않기 BEGIN{}때문에 필요합니다 . 이로 인해 대신 블록이 사용 됩니다 . 이를 처리하는 또 다른 방법은 ( 블록에서) 입니다.ccnull0print 0+cEND{}

관련 정보