
¿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...