sed + eliminar todas las líneas entre dos patrones coincidentes y en lugar de ellas agregar una palabra como x=yes

sed + eliminar todas las líneas entre dos patrones coincidentes y en lugar de ellas agregar una palabra como x=yes

aquí ejemplo de script

cuando eliminé con éxito dos patrones coincidentes (el primero es cat <<EOF | morey el segundo es read x)

la secuencia de comandos

#!/bin/sh

cat <<EOF | more

.
.
.
.


EOF

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

.
.
.

mi comando sed

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

ahora quiero agregar a sed la capacidad de agregar el parámetro x=yes en lugar de todas las líneas de eliminación como se muestra arriba

¿Es posible agregar esta habilidad en mi comando sed?

ejemplo de resultados esperados

#!/bin/sh

x=yes

Respuesta1

Puede usar el acomando ppend para agregar texto:

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

Al menos con GNU sed, se ejecuta incluso si se elimina la línea. Solo desea agregarlo una vez, así que use la primera dirección ay el rango para d. La expresión vacía repite la expresión anterior.

información relacionada