我在rhel 7.2机器上有如下文件
more file.txt
car12
car55
car87
car12
car98
car55
car12
car12
car55
car65
car12
car65
我们想将文件中的单词与数量相加作为以下预期结果
car12 - 5
car55 - 3
car87 - 1
car98 - 1
car65 - 2
如何用awk将上述单词与其数量相加?
你真的不需要 awk,你可以简单地做:
$ sort file | uniq -c
5 car12
3 car55
2 car65
1 car87
1 car98
但是,是的,在 awk 中也有可能:
$ awk '{a[$1]++}END{for(word in a){print word" - "a[word]}}' file
car55 - 3
car65 - 2
car87 - 1
car12 - 5
car98 - 1
使用GNU awk ( gawk
),人们甚至可以使用一些关于如何遍历数组以及扩展如何打印数组的预定义排序。如果您使用PROCINFO["sorted_in"]="@ind_str_asc"
,这将导致按从最常看到到最少看到的顺序打印结果:
$ awk '{a[$1]++}
END {
PROCINFO["sorted_in"]="@ind_str_asc";
for(word in a){print word" - "a[word]}
}' file
car12 - 5
car55 - 3
car65 - 2
car87 - 1
car98 - 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句