Bueno, parte de aprender a usar Unix es averiguar qué están haciendo los scripts existentes. En este caso, necesita saber un poco acerca de cómo awk
funciona para entender el código. Me centraré en describir la parte awk
, esto te ayudará a comenzar a calcular el resto.
Básicamente, awk
es un lenguaje de secuencia de comandos controlado por patrones, donde los comandos consisten en un patrón / condición (búsqueda) y un bloque de código correspondiente. Durante la ejecución, todos los archivos de entrada se leen línea por línea y si el patrón / condición es verdadera para una línea, se ejecuta el bloque de código. Hay patrones especiales BEGIN
y END
que se utilizan para activar el código para que se ejecute antes la primera línea o después se lea la última línea.
En tu ejemplo tienes tres patrones / líneas de código:
NR==FNR {a[i++]=$0};
NR
y FNR
son dos variables especiales establecidas por awk
. Puedes ver su significado con man awk
para ver que
NR ordinal number of the current record
FNR ordinal number of the current record in the current file
básicamente, esta condición es verdadera mientras se leen las líneas de la primera línea (lo que significa que a[i++]=$0
se ejecuta una vez para cada línea desde el primer archivo) y es falso para todos los archivos adicionales. $0
es la línea actual de entrada.
{b[x++]=$0;};{k=x-i};
Este bloque de código no tiene ninguna condición / patrón, por lo que se ejecuta para cada línea leída (de todos los archivos, incluido el primero).
END {for(j=0;j<i;) print a[j++],b[k++]}'
Esta parte se ejecuta después de que se haya leído y procesado la última línea del último archivo.
Con estos conceptos básicos, deberías poder descubrir el significado de los diferentes bloques de código y las variables.