各行の重複を無視し、.csvファイルで最も一般的な単語を見つける方法は?

各行の重複を無視し、.csvファイルで最も一般的な単語を見つける方法は?

.csvファイルで最も一般的な10の単語を見つける必要があります。ファイルは、各行にカンマ区切りの単語が含まれるように構成されています。同じ行に同じ単語が複数回繰り返されると、1と計算されます。したがって、次の例では次のようになります。

green,blue,blue,yellow,red,yellow
red,blue,green,green,green,brown

緑、青、赤は2と計算し、黄色と茶色は1と計算します。

同様の質問が以前に要求されたことがわかり、1つの解決策は次のとおりです。

<file.csv tr -c '[:alnum:]' '[\n*]' | sort|uniq -c|sort -nr|head  -10

ただし、次のように、単語が同じ行に表示される回数を計算します。

  4 green
  3 blue
  2 yellow
  2 red
  1 brown

これは実際に私に必要なものではありません。助けが必要ですか?また、コマンドの簡単な説明と同様の質問で見つけたコマンドが必要なタスクを実行しない理由に感謝します。

ベストアンサー1

GNUgrepまたは互換製品を使用してください。

$ grep -nEo '\w+' file.csv|sort -u|cut -d: -f2-|sort|uniq -c|sort -k1rn|head
      2 blue
      2 green
      2 red
      1 brown
      1 yellow

おすすめ記事