El lenguaje awk divide sus registros de entrada en campos. Los registros están separados por un carácter llamado el separador de registros. Por defecto, el separador de registros es el carácter newline. Por lo tanto, normalmente, un registro se corresponde con una línea de texto. Algunas veces puedes necesitar un carácter diferente para separar tus registros. Puedes usar un carácter diferente mediante la llamada a la variable empotrada RS (Record Separator).
El valor de RS es una cadena que dice como separar los registros; el valor por defecto es “\n”, la cadena formada por un único carácter newline. Esta es la razón por la cual un registro se corresponde, por defecto, con una línea.
RS puede tener cualquier cadena como valor, pero solamente el primer carácter de la cadena se usará como separador de registros. El resto de caracteres de la cadena serán ignorados. RS es excepcional en este sentido; awk usa el valor completo del resto de sus variables implícitas.
Puedes cambiar el valor de RS en un programa awk con el operador asignación, ‘=’. El nuevo carácter separador de registros de entrada debería estar entre comillas para que sea una constante cadena. A menudo, el momento adecuado para hacer esto es el principio de la ejecución, antes de procesar ninguna entrada, de modo que el primer registro sea leído con el separador apropiado. Para hacer esto, use el patrón especial BEGIN (Ver la sección Los Patrones Especiales BEGIN y END). Por ejemplo:
awk 'BEGIN { RS = "/" } ; { print $0 }' Lista-BBS
cambia el valor de RS a “/”, antes de leer ninguna entrada. Esta es una cadena cuyo primer carácter es una barra; como resultado, los registros se separarán por las barras. Después se lee el fichero de entrada, y la segunda regla en el programa awk (la acción sin patrón) imprime cada registro. Debido a que cada sentencia print añade un salto de línea al final de su salida, el efecto de este programa awk es copiar la entrada con cada carácter barra cambiado por un salto de línea. Otra forma de cambiar el separador de registros es en la línea de comandos, usando la característica asignación de variable. awk '...' RS="/" source-file
Esto fija el valor de RS a ‘/’, antes de procesar source-file.
La cadena vacía (una cadena sin caracteres) tiene un significado especial como valor de RS: significa que los registros están separados solamente por líneas en blanco.
La utilidad awk guarda el número de registros que han sido leídos hasta el momento del fichero de entrada actual. Este valor es almacenado en la variable implícita llamada FNR. Esta variable es inicializada a cero cuando se cambia de fichero. Otra variable implícita, NR, es el número total de registros de entrada leídos de todos los ficheros. Comienza en cero pero nunca es automáticamente reseteada a cero.
Si cambias el valor de RS a mitad de la ejecución de un programa awk, el nuevo valor se usa para delimitar los registros siguientes, pero el registro que esta siendo procesado en ese momento (y los registros ya leídos) no se ven afectados.
0 Comentarios