sed + exclua todas as linhas entre dois padrões correspondentes e em vez deles adicione uma palavra como x=yes

sed + exclua todas as linhas entre dois padrões correspondentes e em vez deles adicione uma palavra como x=yes

aqui exemplo de script

quando eu excluí com sucesso entre dois padrões correspondentes (o primeiro é cat <<EOF | moree o segundo é read x)

o roteiro

#!/bin/sh

cat <<EOF | more

.
.
.
.


EOF

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

.
.
.

meu comando sed

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

agora quero adicionar ao sed a capacidade de adicionar o parâmetro x=yes em todas as linhas de exclusão como acima

é possível adicionar essa habilidade no meu comando sed?

exemplo de resultados esperados

#!/bin/sh

x=yes

Responder1

Você pode usar o acomando ppend para anexar texto:

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

Pelo menos com GNU sed, ele é executado mesmo que a própria linha seja excluída. Você deseja anexá-lo apenas uma vez, então use o primeiro endereço for ae o intervalo for d. A expressão vazia repete a expressão anterior.

informação relacionada