2011-11-16 85 views
1

我想用sed的模式之前插入一行: - 「大衆級」之前插入「XmlRootElement將(​​名稱=‘ABC’)」的sed - 插入線圖案之前

這是腳本:

'/public class/i\@XmlRootElement(name="ABC")' 

但是我有錯誤,當我運行此:

sed -e script testfile.txt 
sed: -e expression #1, char 13: Unterminated `s' command 

誰能幫助我?

感謝

回答

4

對於sed的的我已經習慣了,你必須包括你的i\後換行,和「終止」插入一個空白行,即

sed '/public class/i\ 
@XmlRootElement(name="ABC") 

' file > outFile 

注,新插入文本後面的空行。

注意事項,確保您不會在該行的結束得到任何空白,i\後。

正如我現在你保持實現你在一個單獨的腳本文件的sed,格式限制適用有太多,只是刪除''對周圍的代碼。

而且更重要的是,你的腳本失敗,因爲你用-e一個sed腳本文件,使用

sed -f script testfile.txt 

-e使用,如果你的嵌入在線sed腳本,我的第一個解決方案上面可以預先 - 與-e一起使用。

編輯固定參考a\「我\」。 Doah

希望這有助於。

+0

謝謝。有用! Fyi,我在UnxUtils.zip中使用了sed的窗口。該腳本放在一個文本文件中,當刪除單引號時工作 – TommyQ

+0

是的,剛剛完成編輯,提及該選項。感謝您的投票。祝你好運。 – shellter

2

這可能會爲你工作:

# cat <<\! >/tmp/test.sed 
> /^aaa/i\ 
> xxx 
> /^bbb/a\ 
> yyy\ 
> zzz 
> /^ccc/c\ 
> the end 
> ! 
# echo -e "aaa\nbbb\nccc" | sed -f /tmp/test.sed 
xxx 
aaa 
bbb 
yyy 
zzz 
the end 

,或者在命令行:

# echo -e "aaa\nbbb\nccc" | sed -e '/^aaa/i\xxx' -e '/^bbb/a\yyy\nzzz' -e '/ccc/c\the end' 
xxx 
aaa 
bbb 
yyy 
zzz 
the end 

一個非常有用的參考是here