5

単一および複数単語の英語フレーズを含むテキスト ファイル (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 内で後処理を行う必要がありますか?

4

1 に答える 1

5

次のように使用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
于 2013-03-11T18:52:12.643 に答える