Bash를 사용하여 특정 문자로 끝나는 단어 수 계산

Bash를 사용하여 특정 문자로 끝나는 단어 수 계산

안녕하세요 여러분, 이 URL에서 's'로 끝나는 단어의 수를 세고 싶습니다.

https://matt.might.net/articles/what-cs-majors-should-know/

이게 내가 한 일이야

curl https://matt.might.net/articles/what-cs-majors-should-know/ | \
grep s$ 

's'로 끝나는 단어를 필터링하여 개수를 세는 방법을 찾을 수 없습니다.

답변1

elinks -no-numbering -no-references -dump https://matt.might.net/articles/what-cs-majors-should-know/ |
  grep -Po '\w+s\b' |
  wc -l

(GNU grep또는 호환 사용)

나에게주세요:595

elinksHTML을 검색하여 원하는 방식으로 텍스트로 변환하세요. 일부 대안은 w3m -dump또는 입니다 lynx -nolist.

그런 다음 하나 이상의 단어 문자(단어 문자는 숫자 또는 밑줄)의 시퀀스를 찾고, s단어 문자가 없으면 로 계산합니다 wc -l.

기본적으로 단어는 2개 이상의 숫자 또는 밑줄 문자의 시퀀스로 정의되며, 다음으로 끝나는 문자를 찾습니다 s( 로 끝나는 문자를 찾는 -i옵션이 추가됨 ). 이는 예를 들어 in 이 계산되지 않음을 의미합니다. 한 글자로 된 단어를 고려하고 싶다면 위와 같이 바꿀 수 있습니다. 아니면 이렇게 하되 생략하면 단어 목록을 볼 수 없게 됩니다 .grepSsit's+*grep -Po 's\b'| wc -l

또 다른 방법은 단어를 먼저 추출하고 다음으로 끝나는 단어를 찾는 것입니다 s.

grep -Eo '\w+' | grep -c 's$'

아무튼 꽤 거친 정의네요단어일반 영어 텍스트에서만 작동합니다. 다른 언어로 된 텍스트에 적용하면 문제가 발생할 수 있습니다. 예를 들어, 폴란드어 단어가 분해된 형식 U+0301(여기서 U+0301은 결합된 악센트임)로 인코딩된 경우 abrogowałybyście폴란드어 단어(단어 목록에서 무작위로 선택됨)에서 일치하는 항목을 찾습니다. 고려된 단어 뒤에는 단어 문자가 없습니다.śss

또는 S에서 무엇을 해야 할지 고려할 수도 있습니다 .USAU.S.A.

관련 정보