Ich möchte eine Zeichenfolge in mehreren Dateien mithilfe von Bash-Befehl suchen und ersetzen. Ich verwende sed
, mit denen ich nicht wirklich vertraut bin.Ersetzen Sie eine Zeichenfolge in mehreren Dateien mit sed
Meine Variablen:
$FILE = (/home/user/file1.txt, /home/user/file2.txt)
$REL = 5.0
Mein Code:
for f in ${FILES[@]}; do sed -i "$f" "s/__ver__ =*/__ver__=$REL/g";
Ausgang:
sed: -e expression #1, char 2: unknown command: `/'
sed: -e expression #1, char 2: unknown command: `/'
Was mit meinem Ausdruck ist falsch?
könnte es mehrere Vorkommen von '__ver__ =' in einer Datei geben? – RomanPerekhrest
@RomanPerekhrest Nein, nur einer. – diegus
Sie versuchen, 'FILE' zuzuordnen (aber scheitern, weil' '' ''' '' '' '' '' nicht sein sollte), aber dann versuchen Sie' FILES' zu verwenden. Eigentlich sollten Sie auch keine Großbuchstaben für Ihre privaten Variablen verwenden. Tatsächlich sehe ich keinen guten Grund, die Dateinamen in eine Variable zu setzen. Ähnlich wollen Sie 'REL = 5.0' ohne Dollarzeichen und ohne Leerzeichen um die Gleichheitszeichen. – tripleee