2017-06-13 55 views
1

考慮下面的配置文件,它有兩個alt_names的實例。在這裏,我想刪除第二次出現的模式alt_namesBASH - 如何使用sed刪除包含第二個模式字符串的行

. 
. 
[ server ] 
subjectAltName = @alt_names 
. 
. 

[ alt_names ] 

我試過sed命令,但它刪除了所有模式發生的行。我用下面的命令來做到這一點,

#sed '/alt_names/{2,$d}' inputfile 

可以在這裏什麼出了錯的sed使用一些棚燈。

回答

1

以下將刪除包含alt_names的第二行。計數器c將隨着每條線具有匹配的模式而增加。

awk '/alt_names/{c++;if(c==2)gsub(/^.*$/,"")}1' 
. 
[ server ] 
subjectAltName = @alt_names 
. 
. 

修改和保存:

awk '/alt_names/{c++;if(c==2)gsub(/^.*$/,"")}1' inputfile >inputfile.tmp && mv inputfile.tmp inputfile 
+0

如何修改文件本身並保存。 – Panch

+0

檢查更新回答 –

+0

我明白了,我們仍然需要在這裏使用臨時文件。我雖然應該有一些類似於'sed'類似於'sed -i 文件名' – Panch

相關問題