tengo un script awk que he definido de este modo:Invocación de una secuencia de comandos, que tiene una shebang awk, con parámetros (VARs)
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
He guardado como columns
y chmod +x
'd ella. Quiero invocarlo para que start
y end
se definan a medida que cruza un archivo. Estaba pensando que esto debería funcionar:
cat some_file | columns -v start=2
Pero no es así. ¡Ayuda!
+1 para la solución más portátil, ya que sólo se utiliza un único argumento. A pesar de que el camino a 'awk' está codificado, por necesidad, debido a tener que conformarse con un argumento, esto debería funcionar en todas las plataformas modernas de Unix. (Dígale si sabe de dónde no.) – mklement0
@ mklement0 No es mío (NixOS). Como NixOS mantiene todos los paquetes aislados y en rutas no estándar. Creo que usar la respuesta de mss sería mejor en mi caso. ** ** EDITAR que no funciona bien desde '-S' no es compatible con POSIX :( –
@PallavAgarwal:. Es bueno saber acerca de cómo difiere NixOS Tenga en cuenta que mientras su sistema operativo puede manejar _múltiples_ fichas en la línea shebang, usted es bueno, en otras palabras: '#!/usr/bin/env awk -f' _may_ trabajo para usted (funciona en OS X, por ejemplo, pero no en Linux). – mklement0