Bueno, a parte de aprender a utilizar Unix es averiguar lo que los scripts existentes están haciendo. En este caso, usted necesita saber un poco acerca de cómo awk
obras de entender el código. Me voy a centrar en la descripción de la awk
parte, esto debe empezar en averiguar el resto.
Básicamente awk
es un patrón, impulsado lenguaje de secuencias de comandos, donde los comandos consisten de una búsqueda (search)/patrón de la condición y de la correspondiente bloque de código. Durante la ejecución, los archivos de entrada se lee línea por línea, y si el patrón/la condición es verdadera para una línea, el bloque de código se ejecuta. Hay modelos especiales BEGIN
y END
que se utilizan para activar el código que se ejecuta antes de la primera línea, o después de la última línea que se lee.
En su ejemplo, usted tiene tres/patrón de líneas de código:
NR==FNR {a[i++]=$0};
NR
y FNR
son dos variables especiales establecidos por awk
. Usted puede buscar su significado con man awk
a ver que
NR ordinal number of the current record
FNR ordinal number of the current record in the current file
así que, básicamente, esta condición es true, mientras que las líneas de la primera línea se lee (lo que significa que a[i++]=$0
se ejecuta una vez por cada línea del primer archivo) y false para todos los archivos adicionales. $0
es la actual línea de entrada.
{b[x++]=$0;};{k=x-i};
Este bloque de código no tiene la condición de patrón de modo que se ejecuta para cada línea de lectura (de todos los archivos, incluyendo la primera).
END {for(j=0;j<i;) print a[j++],b[k++]}'
Esta parte se ejecuta después de la última línea de la última archivo ha sido leído y procesado.
Con estos básicos que usted debe ser capaz de averiguar el significado de los diferentes bloques de código y variables de sí mismo.