2011-11-16 12 views
1

前に行を挿入します - これは、「パブリック・クラス」の前に- 私はSEDのパターンの前に行を挿入したいパターン

を挿入「XmlRootElementが含ま(名前= 『ABC』)」 をスクリプト:

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

私はこれを実行すると、私はエラーを得たしかし:

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

誰も私を助けることができますか?

おかげで私が使用してるのsedのために

答えて

4

は、あなたのi\後に改行を含める必要があり、すなわち、空白行で

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

' file > outFile 

注意を挿入「を終了します」あなたの新しい挿入されたテキストの後の空白行。

i\の後ろに、行末にスペースを入れないように注意してください。

あなたはあなたのsedを別のスクリプトファイルに保存しているので、書式設定の制約もそこに適用されます。コードを囲む''ペアを削除してください。あなたはあなたの中にインラインあなたのsedスクリプトを埋め込む場合、

sed -f script testfile.txt 

-e

が使用されている使用sedスクリプトファイルの -eを使用しているため

そして、もっと重要なのは、あなたのスクリプトが失敗している、私の第一の溶液を上記の事前でき - -eが付いています。

a\を「i \」に修正しました。 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

関連する問題