2014-07-21 73 views
-1

我要刪除的模式和shell腳本空行之間的所有行,例如如何刪除模式和空行之間行shell腳本

# a simple host tree 
[localhost.localdomain] 
    address 127.0.0.1 
    use_node_name yes 
    load=true 

[localhost.localdomain2] 
    address 127.0.1.1 
    use_node_name yes 

[localhost.localdomain3] 
    address 127.0.1.1 
    use_node_name yes 
# 

我想刪除[localhost.localdomain]和之前空以下行線。

回答

1

這樣做:

awk '/\[localhost.localdomain\]/ {f=1} !f; !NF {f=0}' file 
# a simple host tree 
[localhost.localdomain2] 
    address 127.0.1.1 
    use_node_name yes 

[localhost.localdomain3] 
    address 127.0.1.1 
    use_node_name yes 
# 

或者你可以用這樣的塊改變RS所以awk作品:

awk -v RS=[ '!/localhost.localdomain\]/ {print (NR>1?RT:"")$0}' file 
# a simple host tree 

[localhost.localdomain2] 
    address 127.0.1.1 
    use_node_name yes 


localhost.localdomain3] 
    address 127.0.1.1 
    use_node_name yes 
# 
+0

我怎麼能保存更改源文件 – Kumaran

+0

@kumaran用'awk'你喜歡這個'awk'代碼'文件> tmp && mv tmp文件' – Jotne

+0

@jotne ...它的工作原理...非常感謝你 – Kumaran