我想计算文本文件中相同单词的数量并按降序显示它们。
到目前为止,我有:
cat sample.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
这主要给了我令人满意的输出,除了它包含特殊字符,如逗号、句号、!和连字符。
如何修改现有命令以不包含上述特殊字符?
最佳答案
您可以使用 tr
带有您要删除的字母的复合字符串。
例子:
$ echo "abc, def. ghi! boss-man" | tr -d ',.!'
abc def ghi boss-man
或者,使用 POSIX 字符类知道
boss-man
例如将变为 bossman
:$ echo "abc, def. ghi! boss-man" | tr -d [:punct:]
abc def ghi bossman
旁注:您可以使用
awk
获得更多控制和速度。为了这:$ echo "one two one! one. oneone
two two three two-one three" |
awk 'BEGIN{RS="[^[:alpha:]]"}
/[[:alpha:]]/ {seen[$1]++}
END{for (e in seen) print seen[e], e}' |
sort -k1,1nr -k2,2
4 one
4 two
2 three
1 oneone
关于Bash - 计算文本文件中出现的次数并按降序显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46799700/