私はこれを変えたい:
...
%%%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
まず、タグ間(含まれていない)間のコンテンツを削除してから、開くタグの後に目的のテキストを追加します。入力を終了するには「クリック」してください。保存と終了。