sed + lösche alle Zeilen zwischen zwei passenden Mustern und füge stattdessen ein Wort als x=yes hinzu

sed + lösche alle Zeilen zwischen zwei passenden Mustern und füge stattdessen ein Wort als x=yes hinzu

hier Beispiel eines Skripts

als ich erfolgreich zwischen zwei übereinstimmenden Mustern gelöscht habe (das erste ist cat <<EOF | moreund das zweite ist read x)

Das Skript

#!/bin/sh

cat <<EOF | more

.
.
.
.


EOF

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

.
.
.

mein sed-Befehl

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

jetzt möchte ich sed die Möglichkeit hinzufügen, den Parameter x=yes anstelle aller Löschzeilen wie oben hinzuzufügen

ist es möglich, diese Fähigkeit zu meinem Sed-Befehl hinzuzufügen?

Beispiel für erwartete Ergebnisse

#!/bin/sh

x=yes

Antwort1

Mit dem Befehl ppend können Sie aText anhängen:

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

Zumindest bei GNU sedwird es ausgeführt, auch wenn die Zeile selbst gelöscht wird. Sie möchten es nur einmal anhängen, also verwenden Sie einfach die erste Adresse für aund den Bereich für d. Der leere Ausdruck wiederholt den vorherigen Ausdruck.

verwandte Informationen