je un script awk que je l'ai défini ainsi:invocation d'un script, qui a une shebang awk, avec des paramètres (vars)
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
je l'ai enregistré en tant que columns
et chmod +x
« d elle. Je veux l'invoquer afin que start
et end
soient définis lors de son passage sur un fichier. Je pensais que cela devrait fonctionner:
cat some_file | columns -v start=2
Mais ce n'est pas le cas. Aidez-moi!
+1 pour la solution la plus portable, car il utilise un seul argument. Même si le chemin d'accès 'awk' est codé en dur - par nécessité, dû à l'argument _one_ - cela devrait fonctionner sur toutes les plateformes Unix modernes. (Dites-le si vous connaissez un endroit où ce n'est pas le cas.) – mklement0
@ mklement0 Ce n'est pas le mien (NixOS). Depuis NixOS conserve tous les paquets isolés et sur des chemins non standard. Je pense que l'utilisation de la réponse de mss serait mieux dans mon cas. ** EDIT ** Cela ne marche pas non plus puisque '-S' n'est pas compatible avec POSIX :( –
@PallavAgarwal: Bon à savoir sur la différence de NixOS Notez que tant que votre système d'exploitation peut gérer _multiple_ tokens sur la ligne shebang, En d'autres termes: '#!/usr/bin/env awk -f' _may_ fonctionne pour vous (fonctionne sur OS X, par exemple, mais pas sur Linux) – mklement0