假设我有以下文件text.txt
:
she likes cats, and he likes cats too.
我希望我的结果如下:
she 1
likes 2
cats 2
and 1
he 1
too 1
如果将space , .
放入其中会使脚本更容易,那就没问题了。
是否有可以实现此目的的简单shell管道?
答案 0 :(得分:20)
这是我的心脏附近的单线:
cat text.txt | sed 's|[,.]||g' | tr ' ' '\n' | sort | uniq -c
sed剥离标点符号(将正则表达式调整为品味),tr每行输出一个单词。
答案 1 :(得分: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
但这并不能解决你如何识别“单词”的问题。