sed를 사용하여 첫 번째로 일치하는 텍스트 블록을 바꾸고 싶습니다.

sed를 사용하여 첫 번째로 일치하는 텍스트 블록을 바꾸고 싶습니다.

수백 줄의 스크립트가 있고 검색 및 바꾸기 명령이 작동하고 여러 위치에서 삭제됩니다.

바꿀 텍스트가 다른 파일에 있고 검색 및 바꾸기가 완벽하게 작동하지만 안타깝게도 블록 텍스트의 첫 번째 인스턴스만 바꾸고 싶습니다.

ORIGINAL_FILE TEXT_FILE NEW_FILE

RECOMMENDED와 STATIC 사이의 모든 텍스트를 TEXT_FILE의 내용으로 바꿉니다.

sed -n -e "1,/RECOMMENDED/ p" -e "/STATIC/,$ p" -e "/RECOMMENDED/ r $TEXT_FILE" $ORIGINAL_FILE >$NEW_FILE

내가 말했듯이 이것은 작동하지만 RECOMMENDED 및 STATIC을 사용할 수 있는 위치가 여러 군데 있으며 첫 번째 인스턴스만 변경하고 싶습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

이렇게 하면:

sed -n -e '1,/RECOMMENDED/ p' \
       -e '/STATIC/,$ {p;d;}' \
       -e "/RECOMMENDED/ r $TEXT_FILE" < "$ORIGINAL_FILE" > "$NEW_FILE"

그런 다음 행 일치 후에는 일치 항목이 /RECOMMENDED/없습니다 ./STATIC/인쇄한 후 삭제하세요.

관련 정보