不用語のリストを使用して、テキストファイルで最も一般的な単語を見つけたいと思います。すでに次のコードがあります。
tr -c '[:alnum:]' '[\n*]' < test.txt |
fgrep -v -w -f /usr/share/groff/current/eign |
sort | uniq -c | sort -nr | head -10 > test.txt
昔から郵便はがき しかし、私のファイルには次の内容が含まれています。
240
21 ipsum
20 Lorem
11 Textes
9 Blindtexte
7 Text
5 F
5 Blindtext
4 Texte
4 Buchstaben
最初のものは空白で、テキストでは句読点(ドットなど)ですが、それをしたくないので、何を追加する必要がありますか?
答え1
次のテストファイルを検討してください。
$ cat text.txt
this file has "many" words, some
with punctuation. some repeat,
many do not.
単語数を取得するには:
$ grep -oE '[[:alpha:]]+' text.txt | sort | uniq -c | sort -nr
2 some
2 many
1 words
1 with
1 this
1 repeat
1 punctuation
1 not
1 has
1 file
1 do
どのように動作しますか?
grep -oE '[[:alpha:]]+' text.txt
これにより、スペースや句読点を除くすべての単語が1行に1単語ずつ返されます。
sort
これにより、単語がアルファベット順にソートされます。
uniq -c
各単語の発生回数を計算します。 (操作するには
uniq
入力をソートする必要があります。)sort -nr
最も一般的な単語が一番上になるように、出力を数値順に並べ替えます。
混合状況処理
次の大文字と小文字の混合テストファイルを検討してください。
$ cat Text.txt
This file has "many" words, some
with punctuation. Some repeat,
many do not.
some
我々が評価し、Some
同じになりたい場合:
$ grep -oE '[[:alpha:]]+' Text.txt | sort -f | uniq -ic | sort -nr
2 some
2 many
1 words
1 with
1 This
1 repeat
1 punctuation
1 not
1 has
1 file
1 do
ここでは大文字と小文字を無視する-f
オプションを追加し、大文字と小文字を無視するオプションを追加しました。sort
-i
uniq
不用語を除く
次の不用語を計算から除外したいとしましょう。
$ cat stopwords
with
not
has
do
したがって、grep -v
次の単語を削除するには、次を追加します。
$ grep -oE '[[:alpha:]]+' Text.txt | grep -vwFf stopwords | sort -f | uniq -ic | sort -nr
2 some
2 many
1 words
1 This
1 repeat
1 punctuation
1 file
答え2
注文する:
cat text.txt | tr '' '\n' | grep -v 'word\|word2' |sort|
どのように動作しますか?
以下はファイルの内容です
$catfile.txt
Lorem Ipsumは、印刷および組版業界の単純なダミーテキストです。 Lorem Ipsumは、1500年代の無名印刷業者が活字ギャラリーを持ち、活字見本を作るために混ざった後、業界標準のダミーテキストでした。
$cat file.txt|tr '''\n'| grep -w 'an\|a\|is'|sort| 1 不明 1 いつ 2と 人形2個 2 呼吸 2 ロレム 2 テキスト2 タイプ2 3つ
説明する: 新しい行を折り返し、リストから単語を削除し、一般的に使用される単語を並べ替えて計算します。