こんにちは、この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
(GNUgrep
または互換使用)
私にしてください:595
elinks
HTMLを検索して、必要な方法でテキストに変換します。いくつかの選択肢はw3m -dump
またはですlynx -nolist
。
次に、1つ以上の単語文字(単語文字は数字または下線)のシーケンスを見つけ、s
単語文字がない場合に計算しますwc -l
。
デフォルトでは、単語は2つ以上の数字または下線文字のシーケンスとして定義され、次に終わる文字を検索しますs
(で終わる文字を見つける-i
オプションが追加されます)。これは、たとえばinが計算されないことを意味します。 1文字の単語を検討したい場合は、上記のように変更できます。またはこれを行いますが、省略すると単語リストが表示されなくなります。grep
S
s
it's
+
*
grep -Po 's\b'
| wc -l
別の方法は、最初に単語を抽出し、次に終わる単語を見つけることですs
。
grep -Eo '\w+' | grep -c 's$'
とにかくかなり粗い定義ですね言葉通常の英語のテキストでのみ機能します。他の言語のテキストに適用すると、問題が発生する可能性があります。たとえば、ポーランド語の単語が分解された形式U + 0301(ここでU + 0301は結合されたアクセントです)でエンコードされている場合、abrogowałybyście
ポーランド語の単語(単語リストからランダムに選択されている)で一致するものを探します。考慮された単語の後に単語文字はありません。ś
s
s
またはS
で何をすべきかを検討することもできます。USA
U.S.A.