Angenommen, ich habe eine Datei mit Zeilen
aaa = bbb
Jetzt möchte ich sie ersetzen durch:
aaa = xxx
Ich kann das wie folgt machen:
sed "s / aaa = bbb / aaa = xxx / g"
Jetzt habe ich eine Datei mit ein paar Zeilen wie folgt:
aaa = bbb aaa = ccc aaa = ddd aaa = [etwas anderes]
Wie kann ich ersetzen alle diese Zeilen aaa=[something]
mit aaa=xxx
Verwendung sed ?
[something else]
der wörtliche Text oder ist das nur ein Platzhalter? Was ist das mögliche Format der Sache nach dem Gleichheitszeichen?Antworten:
Versuche dies:
quelle
.*
.g
ersetzen Sie alle Instanzen von Regexp durch ErsatzSie können auch die Änderungslinie von sed verwenden, um dies zu erreichen:
Dadurch werden alle Zeilen gefunden, die den
aaa=
Test bestehen. Dies bedeutet, dass die Zeile die Buchstaben enthältaaa=
. Dann ersetzt es die gesamte Zeile durch aaa = xxx. Sie können^
zu Beginn des Tests ein hinzufügen , um sicherzustellen, dass Sie nur die Zeilen erhalten, die mit beginnen,aaa=
aber das liegt bei Ihnen.quelle
sed
mussc
ein Backslash und eine Newline folgen, und es wird keine Newline an den eingefügten Text angehängt, aber Sie können sie beispielsweise verwenden$'/aaa=/c\\\naaa=xxx\n'
.So was:
Wenn Sie sicherstellen möchten, dass das
aaa=
am Anfang der Zeile steht, machen Sie es:quelle
sed 's/aaa=.*/aaa=\'xxx\'/'
aber das öffnet eine>
Eingabeaufforderung in einer neuen Zeile ...Wenn Sie verwenden möchten,
awk
würde dies auch funktionierenquelle
quelle
Dies könnte für Sie funktionieren:
quelle
bbb
,ccc
undddd
ist ganz das, was die OP im Sinne hatte.