2016-08-02 19 views
0

ich eine Datei test.txt habe, die etwa wie folgt aussieht:Ersetzen eine bestimmte Anzahl von Zeichen nach einem Spiel mit sed

something=1something-else=234another-something=5678

Ich mag something-else=234 mit something-else=*** ersetzen, zum Beispiel, aber die einzige Information, Ich habe ist die "Übereinstimmung", die something-else= ist und dass es genau drei Zeichen nach dem Gleichheitszeichen gibt. Zur Zeit habe ich diesen Befehl, der alles auf der Linie nach dem Spiel ersetzt:

sed -i -e 's/\(something-else=\).*/\1***/' test.txt

Ergebnis: something=1something-else=***

Wie kann ich passen sie nur drei Zeichen zu ersetzen, anstatt den gesamten Rest der Zeile?

Antwort

2

Sie suchen

sed -i -e 's/\(something-else=\).\{3\}/\1***/' test.txt 

oder äquivalent

sed -i -e 's/\(something-else=\).../\1***/' test.txt 
1

Wie kann ich es anpassen, um nur drei Zeichen anstelle des gesamten Rests der Zeile zu ersetzen?

können Sie verwenden:

sed 's/\(something-else=\).../\1***/' file 

something=1something-else=***another-something=5678 

Hier ... wird nach something-else= genau drei Zeichen übereinstimmen.

Sie können auch eine in quantifier nummeriert verwenden:

sed -E 's/(something-else=).{3}/\1***/' file