Ich habe ein awk Skript, das ich so definiert haben:ein Skript aufrufen, die eine awk shebang hat, mit Parametern (Vars)
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
I gespeichert haben es als columns
und chmod +x
‚it d. Ich möchte es aufrufen, so dass start
und end
definiert sind, wie es über eine Datei durchläuft. Ich dachte, das sollte funktionieren:
cat some_file | columns -v start=2
Aber es tut es nicht. Hilfe! mit
+1 für die meisten tragbare Lösung, da es nur ein einziges Argument verwendet. Auch wenn der Pfad zu 'awk' fest codiert ist - aus Notwendigkeit, sich mit einem Argument zu begnügen - sollte dies auf allen modernen Unix-Plattformen funktionieren. (Sagen Sie, wenn Sie wissen, wo Sie es nicht wissen.) – mklement0
@ mklement0 Es ist nicht auf meiner (NixOS). Da NixOS alle Pakete isoliert und auf nicht standardmäßigen Pfaden hält. Ich denke, die Antwort von mss wäre in meinem Fall besser. ** EDIT ** Das funktioniert auch nicht, da '-S' ist nicht POSIX-konform :( –
@PallavAgarwal: Gut zu wissen, wie NixOS unterscheidet. Beachten Sie, dass solange Ihr Betriebssystem _multiple_ Tokens auf der Shebang-Linie behandeln kann, Du bist gut, mit anderen Worten: '#!/usr/bin/env awk -f' _may_ funktioniert für dich (funktioniert unter OS X, aber nicht unter Linux) – mklement0