나는 이것을 바꾸고 싶다:
...
%%%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
먼저 태그 사이(포함하지 않음) 사이의 콘텐츠를 삭제한 다음 여는 태그 뒤에 원하는 텍스트를 추가합니다. 입력을 종료하려면 "클릭"하세요. 저장 및 종료.