2017-05-16 3 views
2

des entfernen Lassen Sie sagen, ich habe eine Zeile wie diesemit sed, alles vor dem ersten Auftreten eines Zeichens

Hello my first name is =Bart and my second is =Homer 

suchen Wie kann ich tun, wenn alles nach dem ersten = oder : mit sed zu bekommen?

In diesem Beispiel würde ich gerne das Ergebnis

Bart and my second is =Homer 

ich jetzt bin mit sed 's/.*[=:]//' bekommen, aber ich Homer als Ergebnis (alles nach den letzten = oder :) bekommen, und ich möchte alles bekommen nach dem ersten, und nicht das letzte = oder :

+1

Mögliche Duplikat von [ Löschen der Zeichenfolge bis zum ersten Auftreten eines bestimmten Zeichens] (http://stackoverflow.com/questions/30352111/deleting-string-up-to-the-first-ccurrence-of-certain-character) –

Antwort

3

Normalerweise quantifiers in sed gierig sind, ist die, warum Sie immer die letzte = entsprechen. Was die erste = definiert ist, dass alle Zeichen, bevor es nicht = sind, so:

sed 's/[^=]*=//' 

Ihre Frage impliziert, dass entweder : oder = gültige Marker sind, wobei in diesem Fall

sed 's/[^=:]*[=:]//' 
+1

@Sundeep. Es würde. Es scheint, dass sie zwei mögliche Marker hatten, von denen einer nicht erwähnt wurde. –

+0

@Sundeep. Ich habe dies ausdrücklich in meiner Antwort erwähnt. Vielen Dank. –

Verwandte Themen