uso scripts script programacion mayor manejo filtrar externas eliminar caracteres cadenas básico shell awk shebang

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.