sed + 일치하는 두 패턴 사이의 모든 줄을 삭제하고 대신 x=yes라는 ​​단어를 추가합니다.

sed + 일치하는 두 패턴 사이의 모든 줄을 삭제하고 대신 x=yes라는 ​​단어를 추가합니다.

여기 스크립트 예

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

이제 위와 같이 모든 삭제 줄에 x=yes 매개변수를 추가하는 기능을 sed에 추가하고 싶습니다.

내 sed 명령에 이 기능을 추가할 수 있습니까?

예상되는 결과의 예

#!/bin/sh

x=yes

답변1

append 명령을 사용하여 텍스트를 추가할 수 있습니다 .

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

적어도 GNU에서는 sed줄 자체가 삭제되더라도 실행됩니다. 한 번만 추가하고 싶으므로 첫 번째 주소 a와 범위를 사용하세요 d. 빈 표현식은 이전 표현식을 반복합니다.

관련 정보