Strings durchsuchen, ausschneiden

S

Spooky@work

Grünschnabel
Hallo Zusammen,

ich habe folgendens Problem: Ich habe in einer Variable immer eine Zeichenkette, aus der ich Werte ausschneiden will.

z. B.: Rechnername: Speichernutzung State: CRITICAL Wed Apr 5 09:41:04 CEST 2006 Info: CHECK_NRPE: Socket timeout after 10 seconds.

Aus diesem String möchte ich nun Rechnername ausschneiden. Also alles bis zum doppelpunkt. Wie kann ich das machen? Mit sed habe ich es schon versucht aber nicht hinbekommen, mit cut kann ich es nicht machen, da die Rechnernamen nicht immer gleich lang sind.

Ich denke es muss mit sed gehen, bin aber gerade zu blöd. :(
 
Hallo

Du kannst es mit cut machen, wenn der Rechnername immer an der gleichen Stelle steht und keinen Doppelpunkt enthält.
Code:
MYNAME=$(cut -d":" -f1 inputfile);
echo $MYNAME;

Mit sed geht es genauso wie mit perl oder ....

Code:
MYNAME=$(sed -e 's!:.*!!g inputzeile)

Gruß Wolfgang
 
Danke für die schnelle Hilfe Wolfgang.

Ich glaube mit cut ist es nicht so gut, da der Rechnername (oder besser Rechnerbezeichnung) auch Leerzeichen enthalten kann.

Das sed Kommando das du gepostet hast funktioniert nicht, blick da im moment gar nicht durch. Ich kenne mich mit sed noch nicht sooo aus, ich hätte es so gemacht, aber funktioniert halt nicht:

SERVER=$(echo $msgtext | sed -r s/':*'//)

Kannst du Dein sed Kommando von Dir nochmal kurz erläutern?

Gruß Christian
 
Spooky@work schrieb:
Ich glaube mit cut ist es nicht so gut, da der Rechnername (oder besser Rechnerbezeichnung) auch Leerzeichen enthalten kann.

Dann halt eifnach
Code:
MYNAME=$(cut -d":" -f1 inputfile);
echo "$MYNAME";
 
Hallo

cut funktioniert auch mit Leerzeichen im Namen. Das Trennzeichen wurde ja mit -d ":" als Doppelpunkt festgelegt.
Ich vermute mal eher, dass deine Variable im Nachgang (der weiteren Verarbeitung) am Leerzeichen abgetrennt wird.

Auch der sed Befehl funktioniert.
Code:
$ echo "NAME mit Leerzeichen: Feld mit mehr Zeichen auch Doppelpunkt:"|sed -e 's/:.*//g'
[i]NAME mit Leerzeichen[/i]

Der sed löscht (ersetzt mit Nichts) nur alle Zeichen die nach einem Doppelpunkt folgen, und gibt alles davor aus.

Wenn der Name nun Leerzeichen enthält. solltest du den bei der Weiterverarbeitung immer quoten "$MYNAME"

HTH
Gruß Wolfgang
 
Moin,
Wolfgang schrieb:
Code:
MYNAME=$(sed -e 's!:.*!!g inputzeile)

fehlt da nicht ein einfaches Hochkomma?

Code:
MYNAME=$(sed -e 's!:.*!!g[b]'[/b] inputzeile)
 
Schlaubi_fi.de schrieb:
Moin,


fehlt da nicht ein einfaches Hochkomma?

Code:
MYNAME=$(sed -e 's!:.*!!g[b]'[/b] inputzeile)

Jo, ist im ersten Posting untergegangen.

Gruß Wolfgang
PS Wenn ich dich nicht hätte... :D
 
Danke für euere Hilfe, es funktioniert jetzt!
 
Wolfgang schrieb:
PS Wenn ich dich nicht hätte... :D
Och...wenn ich schon nicht mit Shellskript-Beispielen glänzen kann...versucht man es halt über die Rechtschreibschiene *lach* - nichts für ungut :brav:
 

Ähnliche Themen

Festplatte friert ein nach suspend/resume

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

OpenSuse 11.1 USB Festplatte wird nicht erkannt

Textkonsole mit KMS zu klein

HD Parameter setzen Suse 10.3, lahmer gehts kaum!

Zurück
Oben