파일의 전체 단락을 바꾸는 방법은 무엇입니까?

파일의 전체 단락을 바꾸는 방법은 무엇입니까?

나는 이것을 바꾸고 싶다:

...
 %%%23begin
 aaaaaaa \\
 bbbbbbb \\
 ccccccc \\
 %%%23end
 ...

이와 관련하여

 ...
 %%%23begin
 xxxxxxxx \\
 yyyyyyyy \\
 zzzzzzzzz \\
 tttttttt \\
 %%%23end
 ...

편집 후 행 수는 변경될 수 있습니다.

이 기능을 사용하세요:

function editEntry(){
  local entryIndex="$1"
  local pattern='^%%%'$entryIndex'begin'
  d1=$(grep -n "$pattern" "$theBook" | cut -d: -f 1)
  d1=$((d1+1))
  local pattern='^%%%'$entryIndex'end'
  d2=$(grep -n "$pattern" "$theBook" | cut -d: -f 1)
  d2=$((d2-1))
  local text1=$(sed  -n "$d1,$d2"p "$theBook")
  echo "$text1" >| "$tmpfile"
  gedit "$tmpfile" && local text2=$(cat "$tmpfile" ) 
  sed -i "s@$text1@$text2@" "$theBook"
}

분명히 sed는 전체 단락을 변경하지 않고 해당 줄에서만 작동합니다.

답변1

텍스트 편집 스크립트를 작성하는 ed목적은 다음과 같습니다.

ed file <<'SCRIPT'
/%%%23begin/+1,/%%%23end/-1d
/%%%23begin/a
 xxxxxxxx \\
 yyyyyyyy \\
 zzzzzzzzz \\
 tttttttt \\
.
wq
SCRIPT

먼저 태그 사이(포함하지 않음) 사이의 콘텐츠를 삭제한 다음 여는 태그 뒤에 원하는 텍스트를 추가합니다. 입력을 종료하려면 "클릭"하세요. 저장 및 종료.

관련 정보