2017-02-10 7 views
0

Wie soll ich nur ein einziges Wort vor einem Begrenzer sedentfernen ein einziges Wort vor einem Trennzeichen sed

Für beispielsweise unter Verwendung entfernen wenn der Eingang hello I am eating: mango und Trennzeichen ist : die Ausgabe hello I am : mango

+0

Würde nicht 'sed‚s/[az] +:/:/g 'Datei' tun Sie es für Sie? P.S verwenden 'sed -E 'wenn Mac – ComputerFellow

+0

@ComputerFellow nein wird es nicht. Standardmäßig wendet sed BRE an, Ihr '+' ist ein wörtliches Pluszeichen, es entspricht nichts in OPs Beispiel. Wenn das Wort "[A-Z]" hat, wird es auch fehlschlagen. – Kent

+0

Funktioniert mit der '-E' Option – ComputerFellow

Antwort

2
kent$ sed 's/[^:[:space:]]*:/:/' <<<"hello I am eating: mango" 
hello I am : mango 

Die sed Einzeiler sein sollte, ändert sich die erste foo: in :

+0

Es gibt ein Problem: für Eingabe String 'sed' s/[^: [: Leerzeichen:]] *: /:/'<<" essen: "' gibt einen leeren String zurück . Wenn jedoch kein Leerzeichen vorhanden ist, sollte die Zeichenfolge so bleiben wie sie ist. Bitte können Sie dabei helfen. – prabodhprakash

+0

es ist eine neue Anforderung ... Ich werde darüber nachdenken, wenn ich Zeit habe. – Kent

Verwandte Themen