使用sed在字符前或新行插入文本?
我试图使用脚本在出现新文本时在latex文件中插入\cbstart{}和\cbend{}标记使用sed在字符前或新行插入文本?,sed,latex,Sed,Latex,我试图使用脚本在出现新文本时在latex文件中插入\cbstart{}和\cbend{}标记 end=$(( $start + $diff )) sed -i "" "${start}s/^/\\\\cbstart{} /" "$OUT" sed -i "" "${end}s/$/ \\\\cbend{}/" "$OUT" 但是,如果将\cbend{}标记放在末尾包含注释的新行上,则: \cbstart{} Example text. %Example commment \cbend{} 注
end=$(( $start + $diff ))
sed -i "" "${start}s/^/\\\\cbstart{} /" "$OUT"
sed -i "" "${end}s/$/ \\\\cbend{}/" "$OUT"
但是,如果将\cbend{}标记放在末尾包含注释的新行上,则:
\cbstart{} Example text. %Example commment \cbend{}
注释结束标记。有没有办法使用sed将\cbend{}标记放在%之前或新行上?也许:
sed -i "" "${end}s/\\( %.*\\|$\\)/ \\\\cbend{}\\1/" "$OUT"
以更理智的方式逃跑
sed -i "" "${end}"'s/\( %.*\|$\)/ \\cbend{}\1/' "$OUT"
我在发布之前测试过:
end=""
{ echo foo; echo "bar % with comment"; } |
sed "${end}"'s/\( %.*\|$\)/ \\cbend{}\1/'
由于OP位于Mac上,因此所需的sed咒语为:
sed -i "" -E "${end}"'s/( %.*|$)/ \\cbend{}\1/' "$OUT"
使用其中一个返回sed:1:“sed”:未终止的替换模式。删除第二个sed会删除返回值,但无论如何它都不会添加任何sed。您使用的是什么版本的sed?在macbook上,项目:text_cmds-84Try:
sed-i”“-E“${end}”s/(.*$)/\\cbend{}\1/'$OUT”
sed -i "" -E "${end}"'s/( %.*|$)/ \\cbend{}\1/' "$OUT"