2016-05-12 1431 views
0

我正在尋找一個sed命令來編輯Arch Linux鏡像文件。該命令應搜索評論國名像#Germany並取消以下 註釋行。sed命令來搜索一行並取消註釋以下行

任何幫助表示讚賞。

例子:

前:

#Germany 
#hostA 
#hostB 
... 
#hostH 
#hostI 
... 
#hostZ 

後:

#Germany 
hostA 
hostB 
... 
hostH 
#hostI 
... 
#hostZ 
+1

類似請提供了文件中的幾個示例性輸入線與所述期望的輸出一起。 –

+0

完成。根據要求添加示例。 –

回答

3

使用GNU sed,你可以這樣做

gsed '/#Germany/,+4{/#Germany/ n; s/^#//}' 

$ cat test 
Some 
random 
stuff 

#Germany 
#1 
#2 
#3 
#4 

$ gsed '/#Germany/,+4{/#Germany/ n; s/^#//}' test 
Some 
random 
stuff 

#Germany 
1 
2 
3 
4 

它所做

  • '/#Germany/,+4這是一個地址圖案。它匹配第一個#Germany和它後面的4行。如果匹配,則執行該模式的命令

  • /#Germany/ n;如果是國名,我們可能不會取代它。 n代表下一個,它讀取緩衝區的下一行。

  • s/^#//替換#什麼也沒有。

2

awk

$ awk 'c&&c--{sub(/^#/,"")} /#Germany/{c=8} 1' file 
+0

我選擇了* nullp01n73R *中的命令,因爲問題詢問** sed **。不管怎樣,謝謝你。 –

+1

如果問題是「我怎樣用螺絲刀開一個釘子?」,人們並不會打折「使用錘子」的答案,因爲問題不在於錘子。 –