如何在shell脚本中删除模式和空行之间的界限

时间:2014-07-21 05:55:02

标签: bash shell awk sed

我想删除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 个答案:

答案 0 :(得分: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
#