2011-08-05 19 views
2

sedの特定の行数の下にテキストを追加するにはどうすればよいですか?sedの特定の行数の下にテキストを追加するにはどうすればよいですか?

より

具体的には、私は、

$ cat Target 
########## 
# (1) 
########## 

echo $PWD 


########## 
# (2) 
########## 


########## 
# (3) 
########## 

を 'ターゲット' ファイルを以下しているかどうかはどのように '#(2)' ブロックおよび '#(3)' ブロックの間に線を挿入することができますか? 他の世界では、sedを使ってこのような 'Goal'ファイルを作成したいと思います。

$ cat Goal 
########## 
# (1) 
########## 

echo $PWD 


########## 
# (2) 
########## 

echo "yay" 

########## 
# (3) 
########## 

さまざまな方法で試してみましたが、私は何か手がかりを見つけることができません。 (なぜ特殊パターン '\ n'は機能しません)

私に助言を与えてください。

+1

これは、あなたが溶液の並べ替えを使用することができた場合のawkのようなプログラミング言語、Perlの、などで達成することが非常に容易である、を示すために、1つだけのタグを追加しますどの言語を使用したいのですか? (あなたは1つ以上の言語を持つために叫ぶでしょう;-)。がんばろう。 – shellter

+0

sedの改行に関するこの質問は役に立ちます - http://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n – arunkumar

答えて

1
sed '/# (2)/ {n;n;a\ 
echo "yay" 
}' Target > Goal 
1

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

sed '/^# (2)/,/# (3)/{H;//{x;s/.*#\n\n/&echo "yay"\n/p};d}' Target > Goal 
########## 
# (1) 
########## 

echo $PWD 


########## 
# (2) 
########## 

echo "yay" 

########## 
# (3) 
########## 
関連する問題