2016-08-05 9 views
0

Ich benutze sed, um einen Teil der Zeichenfolge zu löschen, aber der reguläre Ausdruck in sed verwendet ist ein wenig anders als in anderen Programmiersprachen. Hier ist der Satz in Angriff genommen werden:mit sed behalten Teil des Musters

"{\cs6\f1\cf6\lang1024 little} G{\cs6\f1\cf6\lang1024 }EDFW, {\cs6\f1\cf6\lang1024 one two}i{\cs6\f1\cf6\lang1024 </span><span>} {\cs6\f1\cf6\lang1024 </span><span>}= {\cs6\f1\cf6\lang1024 </span><span>}G{\cs6\f1\cf6\lang1024 </span><span>}TOTW, {\cs6\f1\cf6\lang1024 </span><span>}i{\cs6\f1\cf6\lang1024 </span>}" 

I Zeichenfolge wie diese {\cs6\f1\cf6\lang1024} (Muster wie ({\ sth) * (halten)}) und halten, was folgte nach dem Raum löschen möchten z.B. <span>

Ich versuchte dies:

sed 's/{[^\\.* (.*)}]*}/\1/g' 

Die Ausgabe sollte wie folgt aussieht:

little GEDFW, one twoi</span><span> </span><span>=</span><span>G</span><span>TOTW, </span><span>i</span>

aber es scheint "" enthält Platz und die Art, wie ich versuche, die minimale Übereinstimmung zu finden, hat nicht funktioniert. Kann mir jemand helfen?

+1

Willkommen bei Stack-Überlauf. Bitte lesen Sie bald die Seiten [Info] und [Fragen] - und wie Sie früher ein MCVE ([MCVE]) erstellen. Bitte zeigen Sie genau den Ausgang, den Sie von der Eingabe wünschen. Ist die Eingabe eine einzelne Zeile? Sie sagen, Sie möchten eine Zeichenfolge ('{\ cs6 \ f1 \ cf6 \ lang1024}') zuordnen, die nicht in Ihrer Eingabe erscheint (es gibt Leerzeichen und Span-Tags zwischen 1024 und der geschweiften Klammer); das macht es uns schwer zu erraten, was du wirklich willst. Die Sequenz "\ cs6 \ f1 \ lang1024" wird mehrmals in der Eingabe angezeigt. Soll es einmal oder jedes Mal bearbeitet werden, oder was? –

Antwort

0

Es ist einfacher, die Teile entfernen Sie nicht wollen:

sed 's/{\\cs6\\f1\\cf6\\lang1024 *//g; s/}//g' input_file 
Verwandte Themen