Unix uniq命令到CSV文件

时间:2013-03-11 18:42:04

标签: bash unix csv uniq

我有一个包含单词和多词英语短语的文本文件(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中进行一些后处理?

1 个答案:

答案 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