Ho uno script awk che ho definito così:Richiamo uno script, che ha uno shebang awk, con parametri (VAR)
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
Ho salvato come columns
e chmod +x
'd esso. Voglio invocarlo in modo che start
e end
siano definiti mentre attraversa un file. Stavo pensando che questo dovrebbe funzionare:
cat some_file | columns -v start=2
Ma non è così. Aiuto!
+1 per la soluzione più portatile, in quanto utilizza un solo argomento. Anche se il percorso per "awk" è hard-coded - di necessità, a causa di doversi accontentare di un argomento _one - questo dovrebbe funzionare su tutte le moderne piattaforme Unix. (Dillo se sai di dove non sia.) – mklement0
@ mklement0 Non sul mio (NixOS). Poiché NixOS mantiene tutti i pacchetti isolati e su percorsi non standard. Penso che usare la risposta di mss sarebbe meglio nel mio caso. ** MODIFICA ** Non funziona perché '-S' non è conforme a POSIX :( –
@PallavAgarwal: Buono a sapersi su come differisce NixOS. Si noti che finché il sistema operativo è in grado di gestire _multiple_ token sulla linea shebang, sei bravo, in altre parole: '#!/usr/bin/env awk -f' _may_ lavora per te (funziona su OS X, per esempio, ma non su Linux). – mklement0