Bashを使用して特定の文字で終わる単語数を計算する

Bashを使用して特定の文字で終わる単語数を計算する

こんにちは、このURLで「s」で終わる単語の数を数えたいです。

https://matt.might.net/articles/what-c​​s-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

(GNUgrepまたは互換使用)

私にしてください:595

elinksHTMLを検索して、必要な方法でテキストに変換します。いくつかの選択肢はw3m -dumpまたはですlynx -nolist

次に、1つ以上の単語文字(単語文字は数字または下線)のシーケンスを見つけ、s単語文字がない場合に計算しますwc -l

デフォルトでは、単語は2つ以上の数字または下線文字のシーケンスとして定義され、次に終わる文字を検索しますs(で終わる文字を見つける-iオプションが追加されます)。これは、たとえばinが計算されないことを意味します。 1文字の単語を検討したい場合は、上記のように変更できます。またはこれを行いますが、省略すると単語リストが表示されなくなります。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.

関連情報