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.txt
contiene 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 awk
comando como:
awk -f awktest1.awk
pero solo imprime start
y no termina. ¿Alguien puede ayudarme con lo que estoy haciendo mal aquí?
shell-script
awk
Saket Agarwal
fuente
fuente
print $2, "\t", $5
en 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.txt
del script y ejecutarlo de la siguiente manerao incluso, si el script es ejecutable,
El guión se convierte
Tal como está,
awk
está 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
awk
script, escribiría:Para varios archivos:
fuente
O si no desea pasar el nombre del archivo
employee.txt
como argumento de línea de comando, puede hacer algo como esto:Código:
fuente