Question

J'ai un script awk que j'ai défini ainsi:

#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }

Je l’ai sauvegardé en tant que colonnes et chmod + x . Je veux l'invoquer pour que début et fin soient définis lors du survol d'un fichier. Je pensais que cela devrait fonctionner:

cat some_file | columns -v start=2

Mais ce n'est pas le cas. Au secours!

Était-ce utile?

La solution

Essayez d’utiliser:

#!/usr/bin/awk -f

en tant qu'interprète

Autres conseils

env est le moyen le plus simple de gérer ce problème:

#!/usr/bin/env -S awk -f

pour ajouter plus d'options et pour éviter toute interférence avec vos arguments et les arguments de awk:

#!/usr/bin/env -S awk -F: -f ${_} --
BEGIN {
    # delete argv[1], which == ENVIRON[_]
    delete ARGV[1]
} # rest of my awk program

comme env a un standard POSIX, ce shbang devrait vous aider à surmonter les difficultés de mise en œuvre de shbang non standard sous unixen.

EDIT

après avoir écrit ceci , j'ai réalisé que '-S' est une extension env. FreeBSD non conforme à POSIX . Donc, l’enveloppe de coque est probablement la voie à suivre, bien que cela soit malheureux.

Vous trouverez ci-dessous la réponse à ce problème -

#!/bin/awk -f 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top