我想計算文本文件中相同單詞的數量並按降序顯示它們。 到目前爲止,我有:Bash - 計算文本文件中出現的次數並以降序顯示
cat sample.txt | tr ' ' '\n' | sort | uniq -c | sort -nr
其中大部分是給我滿足,除了一個事實,即它包含特殊字符,如逗號,句號,輸出!和連字符。
如何修改現有命令不包含上述特殊字符?
我想計算文本文件中相同單詞的數量並按降序顯示它們。 到目前爲止,我有:Bash - 計算文本文件中出現的次數並以降序顯示
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
如何提取第一單詞,grep
:
grep -o "\w\+" sample.txt | sort | uniq -c | sort -nr
使用'tr -d'刪除特殊字符。 – Barmar