sed + 一致する2つのパターン間のすべての行を削除し、x = yesで単語を追加します。

sed + 一致する2つのパターン間のすべての行を削除し、x = yesで単語を追加します。

以下はサンプルスクリプトです。

一致する2つのパターンの間で正常に削除した場合(最初のパターンはでcat <<EOF | more、2番目のパターンは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

上記のように、削除されたすべての行を挿入するためにx = yesパラメータを追加するsed機能を追加したいと思います。

sedコマンドにこの機能を追加できますか?

予想結果の例

#!/bin/sh

x=yes

答え1

apendコマンドを使用してテキストを追加できます。

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

少なくともGNUでは、sed行自体が削除されても実行されます。一度だけ追加したいので、最初のアドレスaと範囲のみを使用してくださいd。空の式は前の式を繰り返します。

関連情報