PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String zerpflücken



oafish
02-04-2004, 08:11
Hi,
ich habe ein kleines Problem. Und zwar lese ich mittels read Zeilenweise aus einer Datei. Nun möchte ich einen Stringvergleich machen umd eine Abbruchsbedindung zu erreichen.
Also wenn der String mit "Ich bin ein String" beginnt, soll er abbrechen. Alles was nach dem String noch in der Zeile steht, sollte allerdings ignoriert werden.
Geht sowas ohne großen Aufwand?

oafish

mwanaheri
02-04-2004, 08:33
es geht bestimmt auch einfacher, aber
grep "^Ich bin ein String" (zu durchsuchendes)
sucht nach "Ich bin ein String" am Zeilenanfang.
Erfolg oder Nichterfolg sind dann in der Rückgabevariablen von grep zu finden (glaube ich)

oafish
02-04-2004, 09:01
Schon, aber grep erwartet ein File und keine Variable!
Das ist mein Problem!

oafish

fork
02-04-2004, 09:03
echo $VARIABLE | grep "^blabla"

oafish
02-04-2004, 09:39
Oh, stimmt ja :D
Sorry, war mein Fehler...

oafish

oafish
02-04-2004, 10:04
Ähm, schön, nur besteht mein Problem weiterhin.
Und zwar, nehmen wir an, mein String sieht folgendermaßen aus:

Hallo, ich bin ein ganz neuer Test."

Nun möchte, dass er wenn er in der Zeile "Hallo, ich bin ein" steht, abbricht. Mit dem grep hole ich mir alles. Gibt es in der Bash sowas wie startwith oder dergleichen? Damit ich einfach das Anfangswort überprüfen kann ob es übereinstimmt?

oafish

mwanaheri
02-04-2004, 10:12
Original geschrieben von oafish
Ähm, schön, nur besteht mein Problem weiterhin.
Und zwar, nehmen wir an, mein String sieht folgendermaßen aus:

Hallo, ich bin ein ganz neuer Test."

Nun möchte, dass er wenn er in der Zeile "Hallo, ich bin ein" steht, abbricht. Mit dem grep hole ich mir alles. Gibt es in der Bash sowas wie startwith oder dergleichen? Damit ich einfach das Anfangswort überprüfen kann ob es übereinstimmt?

oafish

s.o.
wenn du nach ^Hallo grepst, ist grep nur erfolgreich, wenn Hallo am Zeilenanfang steht.
Findet grep was, ist der exitstatus 0, findet es nichts, ist der Exitstatus 1. Der Exitstatus ist in der Variablen $? gespeichert, kann also von deinem Programm ausgewertet werden.

Um nach einer längeren Phrase zu suchen, kannst du auch "^Hallo, ich bin" eingeben.

oafish
02-04-2004, 10:30
Hi,
ich machs jetzt mit cut. Funktioniert auch ganz gut :)

Danke
oafish

fork
02-04-2004, 11:43
VARIABLE="blabla123bla"
if echo $VARIABLE | grep -q "^blabla"
then echo "blabla am Anfang gefunden"
else echo "blabla nicht am Anfang gefunden"
fi

Das wolltest Du wohl !)

oafish
02-04-2004, 12:16
@fork,
genau das wäre es gewesen :)

oafish