2011-08-05 27 views
2

如何在sed的特定行數下添加文本?如何在sed中的特定行數下添加文本?

更具體地說,如果我有以下 '目標' 文件,

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

echo $PWD 


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


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

我怎樣才能插入 '#(2)' 之間的塊和 '#(3)' 行塊? 在其他世界,我想通過使用sed來創建像這樣的'目標'文件。

$ 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) 
########## 
相關問題