Quiero escribir una shell scriptque se produzcan dos archivos Ay B, y conseguir un resultado como este:
Archivo A:
user_a tel_a addr_a
user_b tel_b addr_b
Archivo B:
process_1 user_a
process_2 user_a
process_3 user_b
Y el resultado:
user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b
¿Cómo puedo hacer esto? awk¿o algo mas?
text-processing
awk
join
Navid Farhadi
fuente
fuente

cutypastesolo, pero no entiendo bien el sintaxis.cutypastemira su página de manual.Respuestas:
join...Salida
Los archivos de entrada deben ordenarse por el campo clave ... Sus archivos de ejemplo ya están ordenados, por lo que no era necesario, pero de lo contrario podría incorporar el orden de la siguiente manera.
fuente
man joinen la línea de comando del terminal ...-1 2 -2 1significa: unirse en el '1er archivo 2do campo' y el ' 2do archivo 1er campo 'Dado
joinypasteno están disponibles en todas partes (no están en mi sistema basado en BusyBox, por ejemplo), aquí es cómo hacerlo con awk, conforme a lo solicitado:fuente
A[$1]=$2 OFS $3... Aquí hay otra variante que evita el bucle manual en COMENZAR, pero es más o menos lo mismo (para awk ), aunque introduce una prueba de condición innecesaria para el segundo archivo:awk 'NR==FNR {A[$1]=$2 OFS $3;next} {print $2, $1, A[$2]}' fileA fileB... (+ 1)