Cuente las apariciones de valores de la columna csv en otros archivos y agréguelos como una nueva columna

Cuente las apariciones de valores de la columna csv en otros archivos y agréguelos como una nueva columna

¿Puedo hacer que esto funcione con herramientas básicas de Shell (sin Python o Perl)?

ENTRADA1:

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

cuente las apariciones de correos electrónicos de la tercera columna, archivo 1 en ENTRADA2:

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

salida deseada:

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

muchas gracias!

Respuesta1

No proporcionaste información válida, así que usé esto:

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

Para lo cual la siguiente frase awk da los resultados esperados:

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

El problema aquí es que su tarea requiere dos pases. (f[] es solo una conveniencia para evitar mantener todo el contenido analizado o volver a analizarlo al final). Pero como no entiendo por qué descartaste Python o Perl (ellossonherramientas básicas de shell), quizás tampoco consideres que awk es un juego limpio...

información relacionada