2016-10-17 4 views
1

Ich versuche, den Befehl sed in einem Shell-Skript in osx/bash zu verwenden. Ich bin gut in der Lage, wie einige Inhalte von MyFile mit der einfachsten Form von Befehl zu ersetzen unterSed Befehl: Suche nach einem String und ersetzen 1 Zeichen nach dem String

sed -i -e 's/abc/123/g' MyFile

wo MyFile Inhalt ist xyzabcdefghijk. Der obige Befehl funktioniert super zu ersetzen abc mit 123 & die Ausgabe als xyz123defghijk macht

Aber, Wie kann ich den sed Befehl ändern ersetzen 2 Zeichen nach abc als auch zusammen mit abc. In klaren Worten, Ich möchte nach einer Zeichenfolge abc in MyFile & suchen ersetzen abc + 2 Zeichen danach mit 12345. So

, wenn MyFile enthält, abcdefghijk dann sollte die Ausgabe enthalten xyz12345fghijk

Irgendwelche Vorschläge bitte?

Antwort

0

Um abc und die beiden Charaktere zu ändern, nachdem abc:

$ sed -e 's/abc../12345/g' MyFile 
xyz12345fghijk 

In regulären Ausdrücken, . für ein einzelnes Zeichen. So passt .. zwei Zeichen und abc.. entspricht abc und beliebige zwei Zeichen nach abc.

Um die Änderung an die Datei an Ort und Stelle zu machen:

sed -i.bak -e 's/abc../12345/g' MyFile 
+0

wenn ich zwischen zwei Zeichen wie „abc“ durch „123“ ersetzt werden soll, was ist das 'sed' Option. Sie kümmern sich um diese kleine Frage .. –

+0

Der zwischen zwei Zeichen Teil ist mir nicht klar. Würdest du erklären, was du damit meinst? Vielleicht fügen Sie Beispieleingabe und -ausgabe hinzu. – John1024

+0

lässt sagen, Beispiel Eingabe ist 'xyz" 123 "45fghijk'. Ich brauche die Ausgabe, um xyz zu sein "96701" 45fghijk ...... So nach "xyz", gibt es 2 doppelte Anführungszeichen, die vorkommen. Ich möchte nur die Saite zwischen den 2 Doppelquadraten ersetzen, die direkt nach 'abc' auftreten, mit etwas wie '96701' –

Verwandte Themen