[Gelöst] awk: Suchmuster mit / drin aus einer Umgebungs...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

[Gelöst] awk: Suchmuster mit / drin aus einer Umgebungs...

Beitrag von MrScoville » 26.10.2016 20:21:13

Hallo,

folgendes kleines Problemchen hätte ich da anzubieten, nachdem ich mich endlich einmal ausführlicher mit sed und awk befasst habe:

In einem bash-Script definiere ich eine Variable:

export DEFAULT_ROUTE_INET6=::/0

Nun möchte ich in einem anderen Script folgendes tun (man erkenne den Sinn, die Zeile ist falsch, sonst wäre ich ja nicht hier ;) ):

export DEFAULT_ROUTER_INET6=`route -n -A inet6 | awk "\\$1 ~ /\$DEFAULT_ROUTE_INET6/ && \\$3 ~ /UG/ {print \\$2}"`

Das Problem scheint zu sein, dass DEFAULT_ROUTE_INET6 ein / enthält. Ähnlicher Code für Inet4 funzt wunderbar (weil DEFAULT_ROUTE_INET4 0.0.0.0 ist, ohne /). Ich möchte in DEFAULT_ROUTE_INET6 keinen Backslash einbasteln, weil ich die Variable freilich noch anderweitig benötige.

Wahrscheinlich müssen wieder einmal "nur" die richtigen "'`Tüdelchen an die richtigen Stellen...?

LG
Zuletzt geändert von MrScoville am 28.10.2016 16:57:27, insgesamt 1-mal geändert.
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von Meillo » 26.10.2016 22:44:51

Du kannst die Regexp auch in Double-Quotes setzen, dann ist der Slash kein Problem mehr (... dafuer aber Double-Quotes im String ;-) ).

Ansonsten musst du den Variablenwert eben escapen:

Code: Alles auswählen

var=`echo "$var" | sed 's,/,\\\/,g'`
Use ed once in a while!

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von r4pt0r » 27.10.2016 15:15:30

Du Setzt eine Variable "DEFAULT_ROUTER_INET6", liest dann aber "DEFAULT_ROUTE_INET6" aus.

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von MrScoville » 27.10.2016 19:28:30

r4pt0r hat geschrieben:Du Setzt eine Variable "DEFAULT_ROUTER_INET6", liest dann aber "DEFAULT_ROUTE_INET6" aus.
Ja, richtig: Ich lese die ipv6 Routing-Tabelle aus, filtere nach der Zeile, in der die defaultroutE steht und möchte daraus dann den defaultroutER ermitteln. Das ist genau der Sinn der Sache.

In ipv4 terms würde ich nach der Default-Route 0.0.0.0 in der Ausgabe von 'net -n' suchen und das entsprechende Feld mit dem Router heraus holen und in die Variable schubsen.

Finde ich aber trotzdem sehr aufmerksam, dass du dieses Detail gesehen und darauf hingewiesen hast!

LG Carsten
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von MrScoville » 27.10.2016 19:43:42

Meillo hat geschrieben:Du kannst die Regexp auch in Double-Quotes setzen, dann ist der Slash kein Problem mehr (... dafuer aber Double-Quotes im String ;-) ).

Ansonsten musst du den Variablenwert eben escapen:

Code: Alles auswählen

var=`echo "$var" | sed 's,/,\\\/,g'`
Genau so. Lernkurve steil, Lernerfolg groß. Danke!

LG
Carsten
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von Meillo » 27.10.2016 20:37:30

MrScoville hat geschrieben:

Code: Alles auswählen

var=`echo "$var" | sed 's,/,\\\/,g'`
Genau so. Lernkurve steil, Lernerfolg groß. Danke!
Genau genommen wirst du noch mehr escapen muessen, denn z.B. die Punkte in /0.0.0.0/ stehen fuer beliebige Zeichen. Um auf Nummer sicher zu gehen koenntest du einfach jedes Zeichen escapen, weil in EREs (die in AWK verwendet werden) escapete Zeichen immer fuer sich selbst literal stehen, also z.B. so:

Code: Alles auswählen

var=`echo "$var" | sed 's,.,\\\&,g'`
(ungetestet)
Use ed once in a while!

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von MrScoville » 27.10.2016 20:57:41

Meillo hat geschrieben: Genau genommen wirst du noch mehr escapen muessen, denn z.B. die Punkte in /0.0.0.0/ stehen fuer beliebige Zeichen. Um auf Nummer sicher zu gehen koenntest du einfach jedes Zeichen escapen, weil in EREs (die in AWK verwendet werden) escapete Zeichen immer fuer sich selbst literal stehen, also z.B. so:

Code: Alles auswählen

var=`echo "$var" | sed 's,.,\\\&,g'`
(ungetestet)
Ich mache einfach alles, was du sagst... jedenfalls probiere ich es aus :)
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von Meillo » 27.10.2016 21:29:47

MrScoville hat geschrieben: Ich mache einfach alles, was du sagst...
Oh, das ist cool! Da kommen mir gleich ein paar gute Ideen! :mrgreen:
Use ed once in a while!

MrScoville
Beiträge: 93
Registriert: 09.09.2016 17:20:59
Lizenz eigener Beiträge: MIT Lizenz

Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen

Beitrag von MrScoville » 28.10.2016 16:27:10

(OT)
Meillo hat geschrieben:
MrScoville hat geschrieben: Ich mache einfach alles, was du sagst...
Oh, das ist cool! Da kommen mir gleich ein paar gute Ideen! :mrgreen:
Will ich die wirklich wissen...? :P
(/OT)
Man mag gar nicht glauben, wie sehr ein 4096-bittiger RSA-Schlüssel einem den Tag vermiesen kann...^^

Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling :evil:

Antworten