2011-12-21 4 views
9
sed -i "/xxxxxxxxxxxx/r inc-sausage" git.html 
sed -i "/xxxxxxxxxxxx/d" git.html 

Сначала я вставить содержимое МСО-колбасы, когда ХХХХХХХХХХХХ находитсязаменить/заменить шаблон с содержимым файла

Во-вторых, я удалить ХХХХХХХХХХХХ

Обе команды делают именно то, что я хочу. Но как я могу объединить обе команды sed с одной? Я попытался

sed -i "s/xxxxxxxxxxxx/r inc-sauasge" git.html 

ответ

9

Для начала, вы coould сцепить обе sed команды в одну строку и не повторять строку поиска, например:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "//d" git.html 

Кроме того, если вы хотите удалить xxxxxxxxxxxx только и не другие вещи в своей линии, вы могли бы сделать это вместо:

sed -i -e "/xxxxxxxxxxxx/r inc-sausage" -e "s///" git.html 
3

Это может работать для вас:

sed -i '/xxxxxxxxxxxx/{r inc-sausage'$'\n''d}' git.html 

Объяснение:

here Смотрите, почему $'\n' необходимо. Также обратите внимание, что команда d должна быть последней, поскольку она удаляет пространство шаблона и сразу же запускает следующий цикл.

Или для GNU СЭД:

sed -i '/xxxxxxxxxxxx/s|.*|cat inc-sausage|e' git.html 
Смежные вопросы