shell - scripts - Invocar un script, que tiene un awk shebang, con parámetros(vars)
scripts awk (3)
Tengo un script awk que he definido así:
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
Lo he guardado como columns
y chmod +x
''d it. Quiero invocarlo para que el start
y el end
se definan a medida que atraviesa un archivo. Estaba pensando que esto debería funcionar:
cat some_file | columns -v start=2
Pero no lo hace. ¡Ayuda!
A continuación se muestra la respuesta a este problema:
#!/bin/awk -f
Trate de usar:
#!/usr/bin/awk -f
como intérprete
env es la forma más fácil de manejar este problema:
#!/usr/bin/env -S awk -f
para agregar más opciones y asegurar que no haya interferencia con sus argumentos, y los argumentos de awk:
#!/usr/bin/env -S awk -F: -f ${_} --
BEGIN {
# delete argv[1], which == ENVIRON[_]
delete ARGV[1]
} # rest of my awk program
como env tiene un estándar POSIX, este shbang debería ayudarte a superar las dificultades de las implementaciones no estándar de shbang en unixen.
EDITAR
después de haber escrito esto, me di cuenta de que ''-S'' es una extensión de FreeBSD env no compatible con POSIX . Así que la envoltura de la cáscara es probablemente el camino a seguir, por desgracia que sea.