Ich kann dies verwenden, um alle Vorkommen von "fly" zu finden und in meiner Datei durch "insect" zu ersetzen:
sed -i 's/fly/insect/g' ./animals.txt
Wie kann ich eine BASH-Variable finden und durch eine andere BASH-Variable ersetzen? z. B.:
name=$(echo "fly")
category=$(echo "insect")
sed -i 's/$name/$category/g' ./animals.txt
Aktualisierung:
Ich verwende GNU sed Version 4.2.1. Wenn ich die untenstehenden Lösungen versuche, wird dieser Fehler gemeldet:
sed: -e expression #1, char 73: unknown option to `s'
Aktualisierung:
Ich habe entdeckt, warum der Fehler auftritt. $category
enthält häufig viele Symbole (z. B. "/", "$", "@", "!", Klammern usw.).
name=$(echo "fly")
category=$(echo "in/sect")
sed -i "s/$name/$category/g" ./animals.txt
Der obige Code wird denselben Fehler erzeugen:
sed: -e expression #1, char 7: unknown option to `s'
Gibt es eine Möglichkeit, dass sed
die Ersatzvorgänge trotz dieser Symbole abschließt?