使用AWK进行字数统计

Kou*_*dra 5 awk

我有如下文件:

这是一个示例文件,该文件将用于测试

this is a sample file
this file will be used for testing
Run Code Online (Sandbox Code Playgroud)

我想用AWK计算单词.

预期的产出是

this 2
is 1
a 1
sample 1
file 2
will 1
be 1
used 1
for 1
Run Code Online (Sandbox Code Playgroud)

以下AWK我写过,但得到一些错误

cat anyfile.txt|awk -F" "'{for(i=1;i<=NF;i++) a[$i]++} END {for(k in a) print k,a[k]}'
Run Code Online (Sandbox Code Playgroud)

Jot*_*tne 8

这对我来说可以:

awk '{for(i=1;i<=NF;i++) a[$i]++} END {for(k in a) print k,a[k]}' testfile
used 1
this 2
be 1
a 1
for 1
testing 1
file 2
will 1
sample 1
is 1
Run Code Online (Sandbox Code Playgroud)

PS你不需要设置-F" ",因为它的默认任何空白.
PS2,不要使用cat可以自己读取数据的程序,比如awk

您可以添加sort代码以对其进行排序.

awk '{for(i=1;i<=NF;i++) a[$i]++} END {for(k in a) print k,a[k]}' testfile | sort -k 2 -n
a 1
be 1
for 1
is 1
sample 1
testing 1
used 1
will 1
file 2
this 2
Run Code Online (Sandbox Code Playgroud)