Ich versuche, mehrere Wörter in der Datei mit zu ersetzen sed -i #expression1 #expression2
Datei
Something 123 item1
Something 456 item2
Something 768 item3
Something 353 item4
Ausgang (Gewünscht)
anything 123 stuff1
anything 456 stuff2
anything 768 stuff3
anything 353 stuff4
Probierversuche
Ich kann die folgende Ausgabe erhalten, indem ich sed -i
für 2mal benutze .
sed -i 's/Some/any/g' file
sed -i 's/item/stuff/g' file
Kann ich irgendeinen Weg finden, dies als einzelnen In-Place-Befehl auszuführen?
sed -i 's/Some/any/g' -i 's/item/stuff/g' file
Als ich den obigen Code ausprobiert habe, dauert es s/item/stuff/g
als Datei und versucht, daran zu arbeiten.
shell
shell-script
text-processing
sed
JigarGandhi
quelle
quelle
sed - i 's/Some\(.*\)item/any\1stuff/' file
Antworten:
Abhängig von der Version von
sed
auf Ihrem System können Sie dies möglicherweise tunSie brauchen hier keinen
g
Schrägstrich nach dem letzten Schrägstrich ims
Befehl, da Sie nur einen Ersatz pro Zeile ausführen.Alternative:
Die
-i
Option teiltsed
mit, dass Dateien an Ort und Stelle bearbeitet werden sollen. wenn es Zeichen unmittelbar nach dem sind-i
dannsed
macht ein Backup der Originaldatei und verwendet diese Zeichen als die Erweiterung der Sicherungsdatei. Z.B,oder
wird geändert
file
und speichert das Original infile.bak
.Natürlich verwenden wir auf einem Unix-System (oder einem Unix-ähnlichen System) normalerweise '~' und nicht '.bak'
quelle
-i
. Alsosed -i '' 's/a/b/;s/c/d/' file
odersed -i .back 's/a/b/;s/c/d/'
odersed -i.back 's/a/b/;s/c/d/'
da. Anderesed
Implementierungen werden im Allgemeinen nicht unterstützt-i
.-i
und der Erweiterung geben kann.sed -i 's/$username = "root"/$username = "newuser"/; s/$password = "password"/$password = "passwd"/; s/$dbname="handicraftstore"/$dbname="handicraft"' Web/database.php
Ergebnissesed: -e expression #1, char 141: unterminated
s "Befehl"s
fehlt Ihrem letzten Befehl das Finale/
.Sie können sed-Ausdrücke mit ";"
quelle
Mehrfacher Ausdruck mit mehreren
-e
Optionen:oder Sie können nur eine verwenden:
Sie sollten eine Erweiterung für die Sicherungsdatei angeben, da bei einigen Implementierungen von
sed
, wie z. B. OSX sed, keine leere Erweiterung verwendet werden kann (Sie müssen verwendensed -i ''
, um die ursprünglichen Dateien zu überschreiben).quelle
Sie können Vim im Ex-Modus verwenden:
%
Wählen Sie alle Zeilen auss
Ersatzx
speichern und schließenquelle