2012-03-03 9 views
4

sedには、一致する行の後に行を追加するコマンドがありますか?私は周りを探索しようとしたが、結果と少し混乱していた。Sed Append Line

Basicllyは、私はそれが

#address=/doubleclick.net/127.0.0.1 

と一致し、

#address=/doubleclick.net/127.0.0.1 

address=/anotherurl/ipaddress 

のように、その下の行を追加したい、これは可能ですか?

答えて

10

あなたはseda(追加)コマンドを使用することができます。

$ sed -i '/^#address=\/doubleclick.net\/127.0.0.1$/a\ 
> address=/anotherurl/ipaddress' file.txt 

それとも、s(代替)コマンドを使用することができます

$ sed -i '[email protected]^#address=/doubleclick.net/[email protected]&\naddress=/anotherurl/[email protected]' file.txt 

注:$>はbashのプロンプトです。

+0

は、2つのラインコマンドまたはあなたはそれを間隔をあけていることですか? – awmusic12635

+0

あなたは** ''を打ちました** \、bashは直ちに実行されず、最初の' ''にマッチする別の '' '(一重引用符)を待つ – kev

+0

うまくいきました – awmusic12635

0

これはあなたのために働くかもしれない:

echo "#address=/doubleclick.net/127.0.0.1"| 
sed '\|#address=/doubleclick.net/127.0.0.1|a\address=/anotherurl/ipaddress' 
#address=/doubleclick.net/127.0.0.1 
address=/anotherurl/ipaddress 

あなたは\は必要ありません代替コマンドの\すなわち\|...|を付加することで、アドレスにお好きな区切り文字を使用することができます。

あなたは空白行をしたい場合は、いくつかの試合次のテキスト、使用:

echo "#address=/doubleclick.net/127.0.0.1"| 
sed '\|#address=/doubleclick.net/127.0.0.1|a\\naddress=/anotherurl/ipaddress' 
#address=/doubleclick.net/127.0.0.1 

address=/anotherurl/ipaddress 
+0

私はこれをスクリプトに追加する際に問題があります。それはスクリプトでそれを置き換えるものではありませんが、手動で実行します – awmusic12635