2013-06-10 2 views
6

У меня есть file.txt, у которого есть контент. Я хочу найти строку в file1.txt, если эта строка соответствует, я хочу заменить эту строку содержимым file.txt. Как я могу это достичь?Выполнение команды cat с помощью команды sed в linux

Я попытался с помощью sed:

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

Это ищет строки соответствия в file1.txt, и замена его строки cat file.txt, но я хочу, содержание file.txt вместо этого.

+1

В чем проблема? –

+0

@amar, не могли бы вы указать или привести пример в своем вопросе, чтобы читатели поняли это лучше. – nsd

ответ

3

Как сохранить содержимое файла в переменной перед вставкой в ​​строку sed?

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

Вы можете сделать: sed "s /% d/$ (cat file.txt)/g" file1.txt тоже. – uzsolt

+0

@uzsolt Да, но я предпочитаю переменные, потому что они более читабельны. –

+0

это было решено благодаря вашей помощи – amar

0

Вы можете прочитать файл с sed помощью команды r. Тем не менее, это линейная операция, которая может и не быть тем, что вам нужно.

sed '/%d/r file1.txt' 

Чтение происходит в конце цикла «per-line».

Смежные вопросы