Verwenden Sie die bash-Variable aus AWK

8

Ich habe das gerade aus meinem Shell-Skript probiert und das Ergebnis war nicht so wie geplant

%Vor%

Es wurde $ REF nicht gefunden, obwohl der Text darin enthalten ist

Schlage vor!

    
vehomzzz 23.12.2010, 14:02
quelle

3 Antworten

15

Ihre Frage lautet: wirklich arm ...

Wie auch immer, ich denke, du willst das:

%Vor%

Beachten Sie das Escapen von und die doppelten Anführungszeichen.

oder das:

%Vor%

Beachten Sie die sinnvolle Verwendung von doppelten und einfachen Anführungszeichen und kein Escaping für .

Sie müssen die Shell-Erweiterung verwenden, da andernfalls das Exportieren einer Shell-Variablen und deren Verwendung aus der Umgebung mit awk - was in dieser Situation overkill ist - umfasst:

%Vor%

Ich denke, awk unterstützt keine Variablen in /.../ guards. Bitte korrigieren Sie mich, wenn ich falsch liege.

    
Marcus Borkenhagen 23.12.2010, 14:06
quelle
36

Anstatt Spiele in der Shell zu zitieren, verwenden Sie die Option -v , um die Shell-Variable als awk-Variable zu übergeben:

%Vor%

Wenn $REF nur Text und kein regulärer Ausdruck ist, verwenden Sie die Funktion index() anstelle von match() .

    
glenn jackman 23.12.2010 14:59
quelle
1

In gawk haben Sie das Array ENVIRON , z. awk 'END{print ENVIRON["REF"]}' /dev/null wird Ihre Variable ausgeben, wenn Sie export aus der Shell in Unterprozesse ausgegeben haben.

    
Andrew Beals 30.03.2012 16:58
quelle

Tags und Links