別のファイルのcsv列の値の発生回数を計算し、新しい列として追加します。

別のファイルのcsv列の値の発生回数を計算し、新しい列として追加します。

デフォルトのシェルツール(PythonやPerlなし)を使用してこれを実行できますか?

1を入力してください:

file1.csv
    John,Doe,[email protected]
    Andy,Barry,[email protected]
    Mary,,[email protected]

INPUT2のfile1の3番目の列で電子メールが発生した回数を計算します。

file2.log
    [email protected]&fghfgh
    asdda&[email protected]
    [email protected]&werewr

希望の出力:

result.csv
    John,Doe,[email protected],0
    Andy,Barry,[email protected],2
    Mary,,[email protected],1

とても感謝しています!

答え1

有効な入力を提供していないので、次のように使用しました。

John,Doe,[email protected]
Andy,Barry,[email protected]
Mary,,[email protected]

次の awk 1 行文は、期待される結果を提供します。

awk -F, '{l[NR]=$0;f[NR]=$3;c[$3]++}END{for(i=1;i<=NR;i++)print l[i] "," c[f[i]]}'

ここでの問題は、タスクに2回のパスが必要であることです。 (f []は完全な内容を解析したり、最後に再解析するのを避けるためです。)しかし、なぜPythonやPerlを除外したのか理解できないのではい基本的なシェルツール)、おそらくawkも公正なゲームだとは思わないかもしれません...

関連情報