2014-03-28 40 views
0

我試圖用一個腳本時,新的文本時插入\ cbstart {}和\ cbend {}標籤乳膠文件。插入文本使用的sed?

end=$(($start + $diff)) 
sed -i "" "${start}s/^/\\\\cbstart{} /" "$OUT" 
sed -i "" "${end}s/$/ \\\\cbend{}/" "$OUT" 

然而,當\ cbend {}標籤被放置在在結尾處包含一個註釋一個新行:

\cbstart{} Example text. %Example commment \cbend{} 

註釋掉結束標記。有沒有辦法使用SED放置\ cbend {}標籤%之前或在新行的方法嗎?

回答

0

也許:

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/' 
foo \cbend{} 
bar \cbend{} % with comment 

由於OP是Mac上,所需的sed咒語是:

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

使用任sed的那些回報:1: 「sed的」:未結束的替代圖案。刪除第二個sed會刪除退貨,但是不管怎樣它都不會添加\ cbend {}。 –

+0

您使用的是什麼版本的sed? –

+0

在MacBook,PROJECT:text_cmds-84 –