2013-06-10 23 views
6

Ho un file.txt con alcuni contenuti. Voglio cercare una stringa in file1.txt, se quella stringa è abbinata Voglio sostituire quella stringa con il contenuto dello file.txt. Come posso raggiungere questo obiettivo?Esegui un comando cat con in sed comando in linux

Ho provato con sed:

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

Questo è alla ricerca per la stringa corrispondente nella file1.txt e sostituisce quello con la stringa cat file.txt, ma voglio contenuto di file.txt invece.

+1

Qual è il problema esattamente? –

+0

@amar, potresti specificare o dare un esempio nella tua domanda in modo che i lettori lo capiscano meglio – nsd

risposta

3

Come risparmiare il contenuto del file nella variabile prima di inserirlo in una stringa sed?

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

Puoi fare: sed "s /% d/$ (cat file.txt)/g" file1.txt. – uzsolt

+0

@uzsolt Sì, ma preferisco le variabili, perché sono più leggibili. –

+0

questo è stato risolto grazie per il tuo aiuto – amar

0

Si può leggere un file con sed utilizzando il comando r. Tuttavia, si tratta di un'operazione basata sulla linea, che potrebbe non essere quello che stai cercando.

sed '/%d/r file1.txt' 

La lettura si verifica alla fine del ciclo 'per-line'.