Awk:一个文本文件中的字符频率?

Awk:一个文本文件中的字符频率?,awk,character,cjk,frequency-analysis,word-frequency,Awk,Character,Cjk,Frequency Analysis,Word Frequency,给定一个多语言.txt文件,例如: But where is Esope the holly Bastard But where is 생 지 옥 이 군 지 옥 이 지 옥 지 我 是 你 的 爸 爸 ! 爸 爸 ! ! ! 你 不 會 的 ! I使用此Awk函数计算空格分隔词的词频: $ awk '{a[$1]++}END{for(k in a)print a[k],k}' RS=" |\n" myfile.txt | sort 获得优雅: 1 생 1 군 1 Bastard 1 Eso

给定一个多语言.txt文件,例如:

But where is Esope the holly Bastard
But where is 생 지 옥 이 군
지 옥 이
지 옥
지
我 是 你 的 爸 爸 !
爸 爸 ! ! !
你 不 會 的 !
I使用此Awk函数计算空格分隔词的词频

$ awk '{a[$1]++}END{for(k in a)print a[k],k}' RS=" |\n" myfile.txt | sort
获得优雅:

1 생
1 군
1 Bastard
1 Esope
1 holly
1 the
1 不
1 我
1 是
1 會
2 이
2 But
2 is
2 where
2 你
2 的
3 옥
4 지
4 爸
5 !
如何将其更改为计数字符频率?


编辑:对于字符频率,我使用了(@Sudo_O的答案):

对于词频,请使用:

$ grep -o '\w*' myfile.txt | awk '{a[$1]++}END{for(k in a)print a[k],k}' | sort > myoutput.txt
一种方法:

$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' 
3 옥
4 h
2 u
2 i
3 B
5 !
2 w
4 爸
1 군
4 지
1 y
2 l
1 E
1 會
2 你
1 是
2 a
1 不
2 이
2 o
1 p
2 的
1 d
1 생
3 r
6 e
4 s
1 我
4 t
使用重定向将输出保存到文件:

$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' > output
对于排序输出:

$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' | sort > output

谢谢很高兴你回答了!有趣的是,两者都是$grep-o。文件和$grep-o'\S'文件工作正常。他们都对吗?@Hugolpz说得对。不,这是不对的。。最初我发布了
grep-o.
,但是将匹配空格,因此我将其更改为
grep-o'\S'
,其中
\S
是匹配任何非空格字符的regexp速记。
$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' | sort > output