GNU/Linux >> Tutoriales Linux >  >> Linux

AWK contra NAWK contra GAWK

Awk es un lenguaje poderoso para manipular y procesar archivos de texto. Es especialmente útil cuando las líneas de un archivo de texto están en formato de registro. es decir, un registro que contiene varios campos separados por un delimitador. Incluso cuando el archivo de entrada no está en un formato de registro, aún puede usar awk para realizar un procesamiento básico de archivos y datos. También puede escribir lógica de programación usando awk incluso cuando no hay archivos de entrada que deban procesarse.

En resumen, AWK es un lenguaje poderoso que puede ser útil para realizar trabajos de rutina diarios.

Si es nuevo en awk, comience leyendo este tutorial de introducción a Awk que forma parte de la serie de tutoriales de Awk.

La curva de aprendizaje en AWK es mucho más pequeña que la curva de aprendizaje en cualquier otro idioma. Si ya conoce el programa C, apreciará lo simple y fácil que es aprender AWK.

AWK fue escrito originalmente por tres desarrolladores:A. Aho, B. W. Kernighan y P. Weinberger. Entonces, el nombre AWK proviene de las iniciales de esos tres desarrolladores.

Las siguientes son las tres variaciones de AWK:

1. Aw

AWK es AWK original escrito por A. Aho, B. W. Kernighan y P. Weinberger.

2. Desnudo

NAWK significa "Nuevo AWK". Esta es la versión de AT&T del Awk.

3. Mirar boquiabierto

GAWK significa "GNU AWK". Todas las distribuciones de Linux vienen con GAWK. Esto es totalmente compatible con AWK y NAWK.

En Linux, escribir awk o gawk invoca GAWK. awk está vinculado a gawk como se muestra a continuación en los sistemas Linux.

# ls -l /bin/awk /usr/bin/awk
lrwxrwxrwx 1 root root  4 Jan  5 23:13 /bin/awk -> gawk
lrwxrwxrwx 1 root root 14 Jan  5 23:13 /usr/bin/awk -> ../../bin/gawk

La siguiente tabla resume las diferentes características que están disponibles en estas versiones. Como puede ver a continuación, gawk es el superconjunto que contiene todas las funciones de awk y nawk originales.

Awk Vs Nawk Vs Gawk

Descargue las diferencias de Awk Vs Nawk Vs Gawk en formato PDF.

Las siguientes variables integradas básicas FS, OFS, RS, ORS, NR, NF y FILENAME están disponibles en todas las versiones de awk.

Característica Descripción AWK NAWK GAWK
FS Separador de campo de entrada
OFS Separador de campo de salida
RS Separador de registros
SRO Separador de registros de salida
NR Número del registro
NF Número de campos en un registro
NOMBRE DE ARCHIVO Contiene el archivo de entrada actual que se está procesando

Todas las siguientes características no están disponibles en el awk original. Están disponibles en nawk y/o gawk como se muestra a continuación.

Característica Descripción NAWK GAWK
FNR Archivo “Número del registro”
ARGC Número total o argumentos pasados ​​al script awk
ARGV Array que contiene todos los argumentos del script awk
ARGINDO Índice a ARGV para recuperar el nombre de archivo actual
SUBSEP Separador de subíndices para índices de matriz
RINICIO La función de coincidencia establece RSTART con la ubicación inicial de str1 en str2
LONGITUD La función de coincidencia establece RLENGTH con la longitud de str1
OFMT Awk usa esto para decidir cómo imprimir valores. El valor predeterminado es “%.6g”
MEDIO AMBIENTE Array que contiene todas las variables y valores de entorno
IGNORARCASO El valor predeterminado es 0. Cuando se establece en 1, no distingue entre mayúsculas y minúsculas para las comparaciones de cadenas y expresiones regulares.
NÚMERO DE ERROR Contiene un mensaje de error de una operación de E/S. p.ej. mientras usa la función getline.
MODO BIN Establece el modo binario para E/S. n puede ser 1 (archivos de entrada), 2 (archivos de salida) o 3 (todos los archivos)
CONVFMT El formato utilizado al convertir el número en cadena.
ANCHOS DE CAMPO n n es un número delimitado por espacios que indica el ancho de las columnas. Si está disponible, gawk usa esto en lugar de FS.
LINT n n puede ser un número. Cuando n es un número distinto de cero (que indica verdadero), gawk mostrará mensajes de lint fatales, no válidos o de advertencia (igual que la línea de comando –lint)
DOMINIO DE TEXTO Esto se utiliza para la internacionalización.
sub(str1,str2,var) En la cadena de entrada (var), str1 se reemplaza con str2, y la salida se almacena nuevamente en var
gsub(str1,str2,var) Igual que sub, pero global. Hace múltiples sustituciones en la misma cadena de entrada (var).
coincidencia(str1,str2) Devuelve un número positivo cuando str1 está presente en str2.
getline Lee la siguiente línea de otro archivo de entrada. Establece $0, NF
getline var Lee la siguiente línea de otro archivo de entrada y guárdalo en la variable (var)
superior(str) Convierte str a mayúsculas
abajo(str) Convierte str a minúsculas
|& Comunicación bidireccional entre el comando awk y el proceso externo
tiempo del sistema() Hora actual en tiempo de época. Combinar con strftime. p.ej. imprimir strftime(“%c”,systime())

Linux
  1. una guía práctica para aprender awk

  2. Un script gawk para convertir comillas tipográficas

  3. ver tamaño de archivo en linux

  4. Separador de campo predeterminado para awk

  5. Cómo aceptar sí del script ¿Está seguro de que desea continuar conectándose (sí/no)?

Comando AWK en Linux con ejemplos

Comando Awk en Linux

Comando awk de Linux con 10 ejemplos

Comando AWK en Linux/Unix

Flatpak frente a Snap frente a AppImage

Usando grep vs awk