Wie kann ich ersetzen ein Wort an einer bestimmten Zeile in einer Datei in unix
Ich habe recherchiert, andere Fragen hier, aber noch nicht wirklich eine gefunden die für mich funktioniert. Ich versuche, wählen Sie eine bestimmte Zeile aus einer Datei und ersetzen Sie eine Zeichenfolge auf, die Zeile mit einem anderen string. Also ich habe eine Datei namens my_course. Ich bin versucht zu ändern eine Zeile in my_course, der beginnt mit "123". auf dieser Linie möchte ich ersetzen Sie die Zeichenfolge "0," "1,". Hilfe?
- Zeigen Sie uns, was Sie versucht haben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Möglichkeit wäre die Verwendung sed:
In der ersten
/../
Teil Sie müssen nur angeben, die Muster, die Sie suchen^123
für eine Zeile beginnend mit 123.In der
s/from/to/
Teil, den Sie haben, geben Sie die substitution durchgeführt werden.Beachten Sie, dass standardmäßig nach der substitution wird die Datei auf stdout geschrieben. Sie möchten vielleicht:
leiten Sie die Ausgabe mit
... > my_new_course
durchführen der substitution "in place" mit der
-e
Schalter sedWenn Sie mit der destruktiven in-place Variante, die Sie möglicherweise verwenden möchten
-iEXTENSION
darüber hinaus halten Sie eine Kopie mit der angegebenen ERWEITERUNG der ursprünglichen version, falls etwas schief geht.EDIT:
Entsprechend der gewünschten gefüttert mit einem Präfix in einer Variablen gespeichert, die Sie haben, schließen Sie den sed-Skript mit doppelten Anführungszeichen
"
als mit single qoutes'
verhindern variable expansion:'
wird verhindern, dass die bash expandiert $input. Sie haben, um ein zusätzliches paar von"
rund um Ihren Ausdruck zu haben, $input erweitert:"'/^$input/ s/0/1/'"
. Und vergessen Sie nicht den abschließenden Schrägstrich/
im substitutionsmuster wie in dem Beispiel, das Sie veröffentlicht haben."
statt single quotes'
? Ich werde den Beitrag aktualisieren, die version, die funktionieren sollte.Haben Sie versucht, diese:
sed -e '[line]s/old_string/new_string/' my_course
PS: die [ ] nicht verwendet werden sollte, ist es nur klar zu stellen, dass Sie sollten die Zahl vor dem "s".
Prost!
In der Tat, die -e, in diesem Fall ist nicht notwendig, ich kann schreiben, nur