使用sed在字符之前或新行上插入文本?

时间:2014-03-28 16:34:17

标签: sed 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{}

评论结束标记。有没有办法使用sed将\ cbend {}标记放在%或新行之前?

1 个答案:

答案 0 :(得分:0)

也许:

sed -i ""  "${end}s/\\( %.*\\|$\\)/ \\\\cbend{}\\1/" "$OUT"

saner逃避

sed -i ""  "${end}"'s/\( %.*\|$\)/ \\cbend{}\1/' "$OUT"

我在发布之前测试了这个:

end=""
{ echo foo; echo "bar % with comment"; } | 
sed "${end}"'s/\( %.*\|$\)/ \\cbend{}\1/'
foo \cbend{}
bar \cbend{} % with comment

由于OP在Mac上,所需的sed咒语是:

sed -i "" -E "${end}"'s/( %.*|$)/ \\cbend{}\1/' "$OUT"