[Gelöst] awk: Suchmuster mit / drin aus einer Umgebungs...
-
- 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...
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
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
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
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:
Ansonsten musst du den Variablenwert eben escapen:
Code: Alles auswählen
var=`echo "$var" | sed 's,/,\\\/,g'`
Use ed once in a while!
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
Du Setzt eine Variable "DEFAULT_ROUTER_INET6", liest dann aber "DEFAULT_ROUTE_INET6" aus.
-
- Beiträge: 93
- Registriert: 09.09.2016 17:20:59
- Lizenz eigener Beiträge: MIT Lizenz
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
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.r4pt0r hat geschrieben:Du Setzt eine Variable "DEFAULT_ROUTER_INET6", liest dann aber "DEFAULT_ROUTE_INET6" aus.
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
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
-
- Beiträge: 93
- Registriert: 09.09.2016 17:20:59
- Lizenz eigener Beiträge: MIT Lizenz
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
Genau so. Lernkurve steil, Lernerfolg groß. Danke!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'`
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
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
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:MrScoville hat geschrieben:Genau so. Lernkurve steil, Lernerfolg groß. Danke!Code: Alles auswählen
var=`echo "$var" | sed 's,/,\\\/,g'`
Code: Alles auswählen
var=`echo "$var" | sed 's,.,\\\&,g'`
Use ed once in a while!
-
- Beiträge: 93
- Registriert: 09.09.2016 17:20:59
- Lizenz eigener Beiträge: MIT Lizenz
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
Ich mache einfach alles, was du sagst... jedenfalls probiere ich es ausMeillo 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:(ungetestet)Code: Alles auswählen
var=`echo "$var" | sed 's,.,\\\&,g'`
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
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
Oh, das ist cool! Da kommen mir gleich ein paar gute Ideen!MrScoville hat geschrieben: Ich mache einfach alles, was du sagst...
Use ed once in a while!
-
- Beiträge: 93
- Registriert: 09.09.2016 17:20:59
- Lizenz eigener Beiträge: MIT Lizenz
Re: awk: Suchmuster mit / drin aus einer Umgebungsvariablen
(OT)
(/OT)
Will ich die wirklich wissen...?Meillo hat geschrieben:Oh, das ist cool! Da kommen mir gleich ein paar gute Ideen!MrScoville hat geschrieben: Ich mache einfach alles, was du sagst...
(/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
Der so genannte "Teufel im Detail" hat einen Namen: Tight coupling