Regulärer Ausdruck in sed für mehrere Ersetzungen in einer Anweisung
Will ich desinfizieren wenig input und ersetzen mehrere Zeichen mit akzeptablen input, z.B. eine Dänische 'å
' mit 'aa
'.
Dies ist leicht getan mit mehreren Aussagen, z.B. /æ/ae/
/å/aa/
/ø/oe/
aber aufgrund der Einschränkungen tool, ich möchte in der Lage sein, dies in einem einzigen regulären Ausdruck.
Kann ich fangen alle relevanten Fällen ( /[(æ)(ø)(å)(Æ)(Ø)(Å)]/
), aber ich Ersatz funktioniert nicht wie ich es will (aber wohl vollkommen wie beabsichtigt):
$ temp="RødgrØd med flæsk"
$ echo $temp
RødgrØd med flæsk
$ echo $temp | sed 's/[(æ)(ø)(å)(Æ)(Ø)(Å)]/(ae)(oe)(aa)(Ae)(Oe)(Aa)/g'
R(ae)(oe)(aa)(Ae)(Oe)(Aa)dgr(ae)(oe)(aa)(Ae)(Oe)(Aa)d med fl(ae)(oe)(aa)(Ae)(Oe)(Aa)sk
(ersten echo Zeile ist zu zeigen, dass es nicht ein encoding-Problem)
Nur so nebenbei, das tool Problem ist, dass ich gerne auch die gleichen regex in einer Sublime Text 2 snippet.
Jemand in der Lage, zu erkennen, was ist falsch an meiner regex-Anweisung?
Vielen Dank im Voraus.
InformationsquelleAutor der Frage Jan | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es aufgeteilt in mehrere
sed
- Anweisungen, getrennt durch;
:InformationsquelleAutor der Antwort Anders Johansson
Mit
werden Sie den trick tun.
So, zu übersetzen in das, was Sie brauchen,
InformationsquelleAutor der Antwort DonCallisto
Könnte dies für Sie arbeiten (GNU sed):
Es funktioniert durch hinzufügen einer lookup-Tabelle an das Ende der Zeile, Schleife, bis alle Schlüssel ersetzt werden, dann entfernt die lookup-Tabelle.
InformationsquelleAutor der Antwort potong