teilzeichenkette extrahieren

Post Reply
Message
Author
max

teilzeichenkette extrahieren

#1 Post by max »

hallo1

ich möchte aus RX bytes:495024 (483.4 Kb) TX bytes:29893 (29.1 Kb)
gerne nur die anzahl der bytes (jeweils rx und tx separat) als teilzeichenkette extrahieren. hat jemand einen tipp wie das geht? mit "expr" läßt sich das wohl nicht machen.

Jochen

Re: teilzeichenkette extrahieren

#2 Post by Jochen »

Aber selbstverfreilich geht das auch mit expr!

RX:<pre>expr "RX bytes:495024 (483.4 Kb) TX bytes:29893 (29.1 Kb)" : 'RX bytes:\<!--no-->([<!--no-->0-9]*\<!--no-->)'</pre>
TX:<pre>expr "RX bytes:495024 (483.4 Kb) TX bytes:29893 (29.1 Kb)" : '.*TX bytes:\<!--no-->([<!--no-->0-9]*\<!--no-->)'</pre>

Anstelle der konstanten Zeichenkette müsstest Du natürlich eine Variable setzen, die den entsprechenden Inhalt hat.

Jochen

max

Re: teilzeichenkette extrahieren

#3 Post by max »

danke mit dem festen string geht es aber mit

STR=$(ifconfig eth0|grep "TX bytes:")
RXTRAFFIC=$(expr $STR : 'RX bytes:\([0-9]*\)')

wirft er mir ein

expr: Syntaxfehler

an den kopf. die variable ist mit $STR aber doch eigentlich korrekt?

Jochen

Re: teilzeichenkette extrahieren

#4 Post by Jochen »

Nö, der Fehler ist so eigentlich vorhersehbar. Die Anführungszeichen um meine feste Zeichenkette stehen da nicht um der Shell zu sagen, das es sich hier um eine Zeichenkettenkonstante handelt, sondern um ihr zu sagen, dass die Zeichenkette als eine einzelne Zeichenkette zu interpretieren ist. Ansonsten zerlegt die Shell diese Zeichenkette anhand Blanks, Tabs und Newlines in einzelne Felder, die dann als einzelne Argumente weiter an expr gegeben werden.

Wenn Du nun in STR eine Zeichenkette mit Blanks drin stehe hast, dann setzt die Shell für $STR dort die Zeichenkette ein und bricht diese wiederum in einzelne Felder auf. Also musst Du um $STR die Anführungszeichen schreiben:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">RXTRAFFIC=$(expr <b>"</b>$STR<b>"</b> : 'RX bytes:\([0-9]*\)')</font><hr></pre></blockquote>Und schon funktioniert's.

Schau mal in der bash-Manualpage unter dem Thema "Quoting" nach, da findest Du alles exakt erklärt.

Jochen

max

Re: teilzeichenkette extrahieren

#5 Post by max »

Danke <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle"> Gibts neben der manpage eigentlich auch irgendwo gute dokus zu mthema Scriptprogrammiereung?

Michael

Re: teilzeichenkette extrahieren

#6 Post by Michael »

Vielleicht das <!--nohttp--><a href="http://"http://www-106.ibm.com/developerworks/edu/l-dw-linux-lpir21-i.html"" target="_blank">hier</a><!--url-->

http://www-106.ibm.com/developerworks/e ... r21-i.html

Cheers

Michael

Post Reply