Tengo el siguiente código en un archivo llamado awktest1.awk:
#!/bin/awk -f
BEGIN{print "start"}
{print $2, "\t", $5}
END{print "end"} employee.txt
donde employee.txtcontiene los siguientes datos:
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA Technology $6,000
Ejecuto el awkcomando como:
awk -f awktest1.awk
pero solo imprime starty no termina. ¿Alguien puede ayudarme con lo que estoy haciendo mal aquí?
shell-script
awk
Saket Agarwal
fuente
fuente

print $2, "\t", $5en lugar deprint $2 "\t" $5, está escribiendo el segundo campo seguido de OFS (espacio), TAB, OFS y el quinto campo.Respuestas:
El error está dando el nombre de archivo para procesar en el script; debe eliminar
employee.txtdel script y ejecutarlo de la siguiente manerao incluso, si el script es ejecutable,
El guión se convierte
Tal como está,
awkestá esperando la entrada de la entrada estándar en lugar de leer de un archivo. Por eso nunca termina ...fuente
Para complementar la respuesta de @ Stephen , si desea codificar el nombre del archivo de entrada en el
awkscript, escribiría:Para varios archivos:
fuente
O si no desea pasar el nombre del archivo
employee.txtcomo argumento de línea de comando, puede hacer algo como esto:Código:
fuente