sed + удалить все строки между двумя совпадающими шаблонами и вместо них добавить слово x=yes

sed + удалить все строки между двумя совпадающими шаблонами и вместо них добавить слово x=yes

вот пример скрипта

когда я успешно выполнил удаление между двумя совпадающими шаблонами (первый — cat <<EOF | moreи второй — read x)

сценарий

#!/bin/sh

cat <<EOF | more

.
.
.
.


EOF

echo -n "Do you agree with the License? [yes/no] "
read x

.
.
.

моя команда sed

sed -i '/^cat <<EOF | more/,/^\read x/d' test.sh

теперь я хочу добавить в sed возможность добавлять параметр x=yes вместо всех строк удаления, как указано выше

можно ли добавить эту возможность в мою команду sed?

пример ожидаемых результатов

#!/bin/sh

x=yes

решение1

aДля добавления текста можно использовать команду ppend:

sed -e '/^cat <<EOF | more/ax=yes' -e '//,/^\read x/d' 

По крайней мере, с GNU sedон выполняется, даже если сама строка удаляется. Вы хотите добавить его только один раз, поэтому просто используйте первый адрес для aи диапазон для d. Пустое выражение повторяет предыдущее выражение.

Связанный контент