Einbetten von awk in ein Shell-Skript

8

Ich habe ein Bash-Skript (script.sh) benutzt, das verschiedene awk-Skripte (script1.awk, script2.awk) verwendet, die auf "runtime" zugeschnitten sind, indem sie Werte für die Instanz ersetzen. Ich habe nach Möglichkeiten gesucht, sie vollständig in das erste Bash-Skript einzubetten. Idealerweise hätte ich gerne eine Datei wie diese:

%Vor%

anstelle des traditionellen:

%Vor%

Natürlich könnte ich sie in eine Datei schreiben, aber der springende Punkt ist nicht. Irgendwelche Vorschläge?

EDIT: Obwohl Dogbane Antworten funktioniert gut, das nächste Problem ist, dass mit den & lt; & lt; 'HIER' Tags, Newline-Zeichen nicht gelesen werden. Ich kann nicht unquote, da er sonst versucht, das awk-Skript zu interpretieren dann treffen wir auf ein $ -Zeichen innerhalb (und es gibt). Ohne Zeilenumbrüche kann ich nichts innerhalb des awk-Skripts kommentieren (ohne die Hälfte des Skripts zu kommentieren, wenn die Zeilenumbrüche entfernt werden ...). Jeder?

%Vor%     
Bertrand Caron 22.02.2013, 08:41
quelle

3 Antworten

9

Entfernen Sie die einfachen Anführungszeichen um das awk-Skript und schließen Sie die Skriptvariable in doppelte Anführungszeichen ein. Das funktioniert für mich:

%Vor%     
dogbane 22.02.2013, 09:12
quelle
2

Die einfachen Anführungszeichen um awk-Skripte können in einer Shell streitsüchtig sein.

%Vor%

Dies wird von stdin und dann another_file entfernen und Zeilen ausgeben, die dummy enthalten und das erste Feld durch das erste Argument Ihres Bash-Skripts ersetzen. Beachten Sie, dass die Bash-Variable $ 1 nicht in Anführungszeichen gesetzt werden muss.

    
technosaurus 22.02.2013 09:18
quelle
1

Sie können Ihr awk in Ihr Bash-Skript einfügen, indem Sie ein Here-Dokument verwenden.

    
Axel 22.02.2013 08:54
quelle

Tags und Links