comando gawk en Linux con ejemplos

El comando gawk en Linux se usa para escanear patrones y procesar lenguaje. El comando awk no requiere compilación y permite al usuario usar variables, funciones numéricas, funciones de string y operadores lógicos. Es una utilidad que permite a los programadores escribir programas pequeños y efectivos en forma de declaraciones que definen patrones de texto que se buscarán en un documento de texto y la acción que se tomará cuando se encuentre una coincidencia dentro de una línea. 

El comando gawk se puede utilizar para: 
 

  • Escanea un archivo línea por línea.
  • Divide cada línea de entrada en campos.
  • Compara la línea/los campos de entrada con el patrón.
  • Realiza acciones en líneas coincidentes.
  • Transformar archivos de datos.
  • Producir informes formateados.
  • Formato de líneas de salida.
  • Operaciones aritméticas y de strings.
  • Condicionales y bucles.

Sintaxis: 
 

gawk [POSIX / GNU style options] -f progfile [--] file ...
gawk [POSIX / GNU style options] [--] 'program' file ...

Algunas opciones importantes: 

  • -f progfile, –file=progfile: Lee el código fuente del programa AWK desde el archivo program-file, en lugar del primer argumento de la línea de comando. Se pueden usar múltiples opciones -f (o –file).
  • -F fs, –field-separator=fs: Utiliza FS para el separador de campo de entrada (el valor de la variable predefinida FS).
  • -v var=val, –assign=var=val: Asigna el valor val a la variable var , antes de que comience la ejecución del programa.

Ejemplos: 

  • -F: Utiliza FS para el separador de campo de entrada (el valor de la variable predefinida FS). 

     

gawk -F: '{print $1}' /etc/passwd
  •  

  • -f: Lee el código fuente del programa AWK desde el archivo program-file, en lugar del primer argumento de la línea de comando. Se pueden usar múltiples opciones -f (o –file). 

     

gawk -F: -f mobile.txt /etc/passwd
  •  

Algunas variables incorporadas: 

  • NR: Mantiene un conteo actual del número de línea de entrada.
  • NF: Mantiene un conteo del número de campos dentro del registro de entrada actual.
  • FS: contiene el carácter separador de campo que se utiliza para dividir campos en la línea de entrada.
  • RS: Almacena el carácter separador de registro actual.
  • OFS: Almacena el separador de campos de salida, que separa los campos cuando Awk los imprime.
  • ORS: Almacena el separador de registros de salida, que separa las líneas de salida cuando Awk las imprime.

Ejemplos: 

  • NR: 

     

gawk '{print NR "-" $1 }' mobile.txt
  •  

  • RS: 

     

gawk 'BEGIN{FS=":"; RS="-"} {print $1, $6, $7}' /etc/passwd
  •  

  • OFS: 

     

gawk 'BEGIN{FS=":"; OFS="-"} {print $1, $6, $7}' /etc/passwd
  •  

Muestra más comandos con ejemplos: 

  • Considere el siguiente archivo de texto de muestra como el archivo de entrada para todos los casos a continuación. 

    Para crear un archivo de texto: 

     

cat > mobile.txt
  •  

  • Comportamiento predeterminado de gawk: por defecto, gawk imprime cada línea de datos del archivo especificado. 

     

gawk '{print}' mobile.txt
  •  

  • Para imprimir las líneas que coinciden con el patrón dado: 

     

gawk '/Sunil/ {print}' mobile.txt 
  •  

  • En el ejemplo anterior, el comando gawk imprime toda la línea que coincide con ‘Sunil’.

  • Para dividir una línea en campos: para cada línea, el comando gawk divide el registro delimitado por el carácter de espacio en blanco de forma predeterminada y lo almacena en las variables $n. Si la línea tiene 3 palabras, se almacenará en $1, $2 y $3 respectivamente. $0 representa la línea completa. 

     

gawk '{print $2}' mobile.txt
  •  

  • En el ejemplo anterior, $2 representa el número de móvil. campo.

  • Para mostrar el recuento de líneas: 

     

gawk '{print NR, $0}' mobile.txt
  •  

  • Para encontrar la longitud de la línea más larga presente en el archivo: 

     

gawk '{ if (length($0) > max) max = length($0) } END { print max }' mobile.txt
  •  

  • Para contar las líneas en un archivo: 

     

gawk 'END { print NR }' mobile.txt
  •  

  • Para imprimir líneas con más de 5 caracteres: 

     

gawk 'length($0) > 5' mobile.txt
  •  

Nota: 

  • Para verificar la página del manual del comando gawk, use el siguiente comando: 

     

man gawk
  • Para consultar la página de ayuda del comando gawk, use el siguiente comando: 

     

gawk --help
  •  

Publicación traducida automáticamente

Artículo escrito por Mandeep_Sheoran y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *