mam AWK że zdefiniowany w następujący sposób:Wywoływanie scenariusz, który ma shebang awk z parametrem (vars)
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
I zapisany jako columns
i chmod +x
„to R. Chcę go wywołać, tak aby zdefiniowano start
i podczas przechodzenia przez plik. Myślałem, że to powinno zadziałać:
cat some_file | columns -v start=2
Ale tak nie jest. Wsparcie!
+1 dla większości przenośnych rozwiązania, ponieważ używa tylko jeden argument. Mimo że ścieżka do 'awk' jest zakodowana na stałe - z konieczności, z powodu konieczności czynienia z jednym argumentem - powinno to działać na wszystkich współczesnych platformach uniksowych. (Powiedz, czy wiesz o jakimkolwiek miejscu, w którym się nie znajduje.) – mklement0
@ mklement0 To nie dotyczy moich (NixOS). Ponieważ NixOS utrzymuje wszystkie pakiety izolowane i na niestandardowych ścieżkach. Myślę, że używanie odpowiedzi mss byłoby lepsze w moim przypadku. ** EDIT ** To nie działa, ponieważ '-S' jest niezgodny z POSIX :( –
@PallavAgarwal: Dobrze wiedzieć o tym, jak różni się NixOS.Zauważ, że tak długo, jak twój OS może obsłużyć _multiple_ tokeny na linii shebang, jesteś dobry, innymi słowy: '#!/usr/bin/env awk -f' _may_ działa dla ciebie (działa na systemie OS X, na przykład, ale nie na Linuksie) – mklement0