вот пример скрипта
когда я успешно выполнил удаление между двумя совпадающими шаблонами (первый — 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
. Пустое выражение повторяет предыдущее выражение.