我有一个包含单词和多词英语短语的文本文件(list.txt)。我的目标是为每个单词进行单词计数,并将结果写入CSV文件。
我已经找到了编写每个单词的唯一实例数量的命令,从最大到最小排序。该命令是:
$ tr 'A-Z' 'a-z' < list.txt | tr -sc 'A-Za-z' '\n' | sort | uniq -c | sort -n -r | less > output.txt
问题在于格式化新文件(output.txt)的方式。有3个前导空格,后跟出现次数,后跟空格,后跟单词。然后到下一行。例如:
9784 the
6368 and
4211 for
2929 to
为了以更理想的格式获取结果,我需要做些什么,例如CSV?例如,我希望它是:
9784,the
6368,and
4211,for
2929,to
更好的是:
the,9784
and,6368
for,4211
to,2929
有没有办法用Unix命令执行此操作,还是需要在文本编辑器或Excel中进行一些后处理?
答案 0 :(得分:3)
使用awk
,如下所示:
> cat input
9784 the
6368 and
4211 for
2929 to
> cat input | awk '{ print $2 "," $1}'
the,9784
and,6368
for,4211
to,2929
你完整的管道将是:
$ tr 'A-Z' 'a-z' < list.txt | tr -sc 'A-Za-z' '\n' | sort | uniq -c | sort -n -r | awk '{ print $2 "," $1}' > output.txt