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_bArchivo B:
process_1 user_a
process_2 user_a
process_3 user_bY 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)