5

text.txt以下のようなファイルがあるとします。

she likes cats, and he likes cats too.

結果を次のようにしたいと思います。

she 1
likes 2
cats 2
and 1
he 1
too 1

そこに入れるspace , .とスクリプトが簡単になるのであれば、それで問題ありません。

これを実現できる単純なシェルパイプラインはありますか?

4

2 に答える 2

20

これが私の心の近くで大切なワンライナーです:

cat text.txt | sed 's|[,.]||g' | tr ' ' '\n' | sort | uniq -c

sedは句読点を削除し(正規表現を好みに合わせて調整)、trは結果を1行に1語ずつ入力します。

于 2013-03-14T03:28:51.830 に答える
0

GNU awk を使用すると、レコード セパレータ (RS) をアルファベット以外の任意の文字列に指定できます。

$ gawk -v RS='[^[:alpha:]]+' '{sum[$0]++} END{for (word in sum) print word,sum[word]}' file
she 1
likes 2
and 1
too 1
he 1
cats 2

しかし、それは一般的に「単語」を識別する方法の問題を解決しません。

于 2013-03-14T21:00:08.950 に答える