2013-06-10 15 views
6

Mam file.txt, który ma trochę treści. Chcę wyszukać ciąg w file1.txt, jeśli ten ciąg jest dopasowany Chcę zastąpić ten ciąg z treścią file.txt. Jak mogę to osiągnąć?Wykonaj polecenie cat z poleceniem sed w linux

Próbowałem, używając sed:

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

To jest poszukiwanie napisu pasującego w file1.txt i zastępujący z ciągiem cat file.txt, ale chcę zawartość file.txt zamiast.

+1

Jaki jest dokładnie problem? –

+0

@amar, czy mógłbyś podać lub podać przykład w swoim pytaniu, aby czytelnicy lepiej to zrozumieli? – nsd

Odpowiedz

3

Co powiesz na zapisanie zawartości pliku w zmiennej przed wstawieniem jej do ciągu sed?

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

Możesz zrobić: sed "s /% d/$ (cat file.txt)/g" plik1.txt też. – uzsolt

+0

@uzsolt Tak, ale wolę zmienne, ponieważ są bardziej czytelne. –

+0

Zostało to rozwiązane dzięki za pomoc – amar

0

można odczytać pliku z sed pomocą polecenia r. Jest to jednak operacja liniowa, która może nie być tym, na co masz ochotę.

sed '/%d/r file1.txt' 

Odczyt następuje po zakończeniu cyklu "per-line".

Powiązane problemy