Der folgende Beitrag wurde am 25. 10. 2009, 16:34 Uhr von Klara veröffentlicht.
Hi!
Warum funktioniert folgendes nicht?
echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' |sed 's/\".*:.*:.*:.*:.*:.*\"/bla/g'
ich möchte eigentlich folgendes zurück bekommen
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Klara
Der folgende Beitrag wurde am 25. 10. 2009, 16:39 Uhr von hotti veröffentlicht.
Hi!
> Warum funktioniert folgendes nicht?
> echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' |sed 's/\".*:.*:.*:.*:.*:.*\"/bla/g'
Sicher, dass in der MAC-Addr Doppelpunkte sind?
Hotti
--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
Der folgende Beitrag wurde am 25. 10. 2009, 16:53 Uhr von Klara veröffentlicht.
Hi!
> > Warum funktioniert folgendes nicht?
> > echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' |sed 's/\".*:.*:.*:.*:.*:.*\"/bla/g'
>
> Sicher, dass in der MAC-Addr Doppelpunkte sind?
ja, das steht so in der Datei /etc/udev/rules.d/70-persistent-net.rules (OpenSUSE 11.1)
ifconfig gibt die Doppelpunkte auch aus
scar:~ # ifconfig
eth0 Link encap:Ethernet HWaddr 00:0d:34:26:ec:1e
inet addr:10.9.8.7 Bcast:10.9.8.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fec5:dc1a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:482 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:182490 (178.2 Kb) TX bytes:89328 (87.2 Kb)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:326 errors:0 dropped:0 overruns:0 frame:0
TX packets:326 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:153681 (150.0 Kb) TX bytes:153681 (150.0 Kb)
Klara
Der folgende Beitrag wurde am 25. 10. 2009, 17:59 Uhr von Karla veröffentlicht.
Hi!
> Warum funktioniert folgendes nicht?
> echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' |sed 's/\".*:.*:.*:.*:.*:.*\"/bla/g'
>
> ich möchte eigentlich folgendes zurück bekommen
> SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
warum wird beim zweiten Aufruf von sed die Ersetzung nicht durchgeführt?
susi:~ # cp -a /etc/udev/rules.d/{70-persistent-net.rules,70-persistent-net.rules.bak}
susi:~ # search=`grep eth0 /etc/udev/rules.d/70-persistent-net.rules`
susi:~ # replace=`echo ${search} |sed -r 's/([0-9a-f]{2}:){5}[0-9a-f]{2}/*/'`
susi:~ # echo ${search}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
susi:~ # echo ${replace}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="*", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
susi:~ # sed -i "s/${search}/${replace}/g" /etc/udev/rules.d/70-persistent-net.rules
susi:~ # grep eth0 /etc/udev/rules.d/70-persistent-net.rules*
/etc/udev/rules.d/70-persistent-net.rules:SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
/etc/udev/rules.d/70-persistent-net.rules.bak:SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Klara
Der folgende Beitrag wurde am 27. 10. 2009, 14:54 Uhr von Candid Dauth veröffentlicht.
Heißa, Karla,
> susi:~ # sed -i "s/${search}/${replace}/g" /etc/udev/rules.d/70-persistent-net.rules
Sollte das nicht -e heißen? -i macht etwas ganz anderes, laut der Man-Page hier. Darüberhinaus dürfte es Probleme geben mit den geschweiften Klammern und Fragezeichen und so weiter in deinen beiden Strings, da diese ja in regulären Ausdrücken eine besondere Bedeutung haben.
Besser wär’s, die ganze Ersetzung in nur einem sed-Befehl durchzuführen, zum Beispiel, indem du ihn so erweiterst (ungetestet):
sed -r 's/([0-9a-f]{2}:){5}[0-9a-f]{2}(.*eth0)/*\2/'`
Dadurch werden nur noch Zeilen gematcht, in denen das eth0 weiter hinten steht, und die zweite Klammer wird mithilfe des \2 wieder an den Ersatzstring drangehängt, sodass sich dort nichts verändert.
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
--
„Soggt da Duaschd zum Hunga:
‚I hob heid noh niggs drunga.‘
Do soggt da Hunga zum Duaschd:
‚Woaßt wos? Dehs is mia wuaschd!‘“
Der folgende Beitrag wurde am 25. 10. 2009, 21:48 Uhr von Candid Dauth veröffentlicht.
Heißa, Klara,
> Warum funktioniert folgendes nicht?
> echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' |sed 's/\".*:.*:.*:.*:.*:.*\"/bla/g'
Weil das Anführungszeichen in deinem regulären Ausdruck das erste nimmt, was es findet (also das nach SUBSYSTEM=), denn alles bis zum ersten Doppelpunkt trifft ja auf die Beschreibung .* zu. Ebenso alles nach dem letzten Doppelpunkt bis zum letzten Anführungszeichen, auch das passt auf die Beschreibung .*. Die Lösung ist, die Beschreibung der einzelnen Teile der Mac-Adresse so weit zu spezialisieren, dass sie nur noch die tatsächliche Mac-Adresse matcht und nicht mehr den Rest, zum Beispiel, indem du das .* durch ein [0-9a-f]{2} ersetzt, oder was auch immer alles für Werte bei dir herauskommen können.
Gautera!
Grüße aus Biberach Riss,
Candid Dauth
--
„Soggt da Duaschd zum Hunga:
‚I hob heid noh niggs drunga.‘
Do soggt da Hunga zum Duaschd:
‚Woaßt wos? Dehs is mia wuaschd!‘“
Der folgende Beitrag wurde am 26. 10. 2009, 17:46 Uhr von Klara veröffentlicht.
Hallo
> > Warum funktioniert folgendes nicht?
> > echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0d:34:26:ec:1e", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"' |sed 's/\".*:.*:.*:.*:.*:.*\"/bla/g'
>
> Weil das Anführungszeichen in deinem regulären Ausdruck das erste nimmt, was es findet (also das nach SUBSYSTEM=), denn alles bis zum ersten Doppelpunkt trifft ja auf die Beschreibung .* zu. Ebenso alles nach dem letzten Doppelpunkt bis zum letzten Anführungszeichen, auch das passt auf die Beschreibung .*. Die Lösung ist, die Beschreibung der einzelnen Teile der Mac-Adresse so weit zu spezialisieren, dass sie nur noch die tatsächliche Mac-Adresse matcht und nicht mehr den Rest, zum Beispiel, indem du das .* durch ein [0-9a-f]{2} ersetzt, oder was auch immer alles für Werte bei dir herauskommen können.
ok, das ist mir jetzt soweit Klar
warum funktioniert folgender Versuch nicht?
Klara
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4