2013-06-10 7 views
6

Ich habe eine file.txt, die etwas Inhalt hat. Ich möchte nach einer Zeichenfolge in file1.txt suchen, wenn diese Zeichenfolge übereinstimmt Ich möchte diese Zeichenfolge durch den Inhalt der file.txt ersetzen. Wie kann ich das erreichen?Führen Sie einen Befehl Katze mit in sed-Befehl in Linux

Ich habe versucht, sed mit:

sed -e 's/%d/cat file.txt/g' file1.txt 

Dies ist für den passenden String im file1.txt Suchen und Ersetzen, dass mit der Zeichenfolge cat file.txt, aber ich will Inhalte file.txt statt.

+1

Was ist das Problem genau? –

+0

@amar, könnten Sie ein Beispiel in Ihrer Frage angeben oder geben, damit die Leser es besser verstehen – nsd

Antwort

3

Wie wäre es mit dem Speichern des Inhalts der Datei in der Variablen vor dem Einfügen in die sed-Zeichenfolge?

$content=`cat file.txt`; sed "s/%d/${content}/g file1.txt"
+4

Sie können tun: sed "s /% d/$ (cat file.txt)/g" file1.txt auch. – uzsolt

+0

@uzsolt Ja, aber ich bevorzuge Variablen, weil sie besser lesbar sind. –

+0

dies wurde gelöst, danke für Ihre Hilfe – amar

0

Sie können eine Datei mit sed mit dem r Befehl lesen. Dies ist jedoch eine zeilenbasierte Operation, die möglicherweise nicht das ist, wonach Sie suchen.

sed '/%d/r file1.txt' 

Der Lesevorgang erfolgt am Ende des Zyklus 'pro Zeile'.

Verwandte Themen