![Ersetzen des Wortes (Groß-/Kleinschreibung beachten) in einer Datei](https://rvso.com/image/169413/Ersetzen%20des%20Wortes%20(Gro%C3%9F-%2FKleinschreibung%20beachten)%20in%20einer%20Datei.png)
Ich bin neu bei Linux und habe eine Datei mit 200 Zeilen. In dieser Datei muss ich das spezifische Wort ersetzen, z. B.:vorhandenes Wort: foo Neues Wort: bar
Ich habe einige Blogs gelesen ... ich habe verstanden, dass es mit möglich ist sed
. Aber ich weiß nicht, wie das mit einem Shell-Skript geht
sed 's/foo/bar/' /path to a file
Ich muss ein Skript schreiben und weiß nicht, wie ich die Datei als Eingabe verwenden soll oder ob ich sie in einer Variablen speichern und das spezifische Wort ändern soll.
Das Skript sollte das jeweilige Wort sowie den Dateinamen ändern, z. B.: Eingabedateiname: cat home.txt (zu ersetzendes Wort -->cat) Ausgabedateiname: Dog home.txt (Cat sollte durch Dog ersetzt werden)
Freundlich helfen!
Antwort1
Wenn Sie die Zeichenfolge ändern möchten, foo
können bar
Sie Folgendes verwenden:
#!/bin/bash
# the pattern we want to search for
search="foo"
# the pattern we want to replace our search pattern with
replace="bar"
# my file
my_file="/path/to/file"
# generate a new file name if our search-pattern is contained in the filename
my_new_file="$(echo ${my_file} | sed "s/${search}/${replace}/")"
# replace all occurrences of our search pattern with the replace pattern
sed -i "s/${search}/${replace}/g" "${my_file}"
# rename the file to the new filename
mv "${my_file}" "${my_new_file}"
Bitte beachten Sie, dass, wenn das Suchmuster mit Teilen eines Wortes übereinstimmt, diese Teile ebenfalls ersetzt werden, z. B.:
"Ich habe eine Raupe."
mit dem Suchbegriff "Katze" und dem Ersetzungstext "Hund" würde lauten:
„Ich habe eine Doggerpillar.“
Dies zu vermeiden ist leider nicht ganz trivial.