Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
teilzeichenkette extrahieren

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
max
Gast





BeitragVerfasst am: 25. Jul 2003 9:15   Titel: teilzeichenkette extrahieren

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
Gast





BeitragVerfasst am: 25. Jul 2003 10:25   Titel: Re: teilzeichenkette extrahieren

Aber selbstverfreilich geht das auch mit expr!

RX:
expr "RX bytes:495024 (483.4 Kb) TX bytes:29893 (29.1 Kb)" : 'RX bytes:\([0-9]*\)'

TX:
expr "RX bytes:495024 (483.4 Kb) TX bytes:29893 (29.1 Kb)" : '.*TX bytes:\([0-9]*\)'


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

Jochen
 

max
Gast





BeitragVerfasst am: 25. Jul 2003 10:59   Titel: Re: teilzeichenkette extrahieren

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
Gast





BeitragVerfasst am: 26. Jul 2003 12:21   Titel: Re: teilzeichenkette extrahieren

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:
code:
RXTRAFFIC=$(expr "$STR" : 'RX bytes:\([0-9]*\)')
Und schon funktioniert's.

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

Jochen
 

max
Gast





BeitragVerfasst am: 28. Jul 2003 11:28   Titel: Re: teilzeichenkette extrahieren

Danke Gibts neben der manpage eigentlich auch irgendwo gute dokus zu mthema Scriptprogrammiereung?
 

Michael
Gast





BeitragVerfasst am: 28. Jul 2003 12:50   Titel: Re: teilzeichenkette extrahieren

Vielleicht das hier

http://www-106.ibm.com/developerworks/edu/l-dw-linux-lpir21-i.html

Cheers

Michael
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy