Ich habe zwei verschiedene Dateien:
Datei1
/home/user1/
/home/user2/bin
/home/user1/a/b/c
Datei2
<TEXT1>
<TEXT2>
Ich möchte das <TEXT1>
von File2 mit dem Inhalt von File1 ersetzen, das verwendet sed
. Ich habe diesen Befehl ausprobiert, erhalte aber keine korrekte Ausgabe:
cat File2|sed "s/<TEXT1>/$(cat File1|sed 's/\//\\\//g'|sed 's/$/\\n/g'|tr -d "\n")/g"
Sie können auch andere Tools verwenden, um dieses Problem zu lösen.
/home/user1/ n/home/user2/bin n/home/user1/a/b/cn <TEXT2>
. Keine neuen Zeilen bekommen.
diff
und patch
können einige Zeilen in einer Datei ganz einfach durch andere Zeilen ersetzt werden.
$()
wenn ich zufällige Daten verwende, die in einem Sed-Skript gesammelt wurden, bluten meine Augen. Verwenden Sie niemals externe Daten an Stellen, an denen bestimmte Zeichen mit besonderer Bedeutung interpretiert werden.
sed
Implementierung Sie verwenden. Ihr Code funktioniert für mich mit GNUsed
.