删除文件中的多行(Nagios 配置)
Delete multiple lines in file (Nagios configuration)
我试图从 Nagios 配置文件中删除多行。但是我失败了很多次。现在我向你求助。
Nagios 配置文件:
define host{
use linux-host
host_name vm1
alias vm1
address 1.2.3.4 }
define host{
use linux-host
host_name vm2
alias vm2
address 1.2.3.4
}
define host{
use linux-host
host_name vm3
alias vm3
address 1.2.3.4
}
我需要一个允许我删除整个文本块的通用命令(定义主机{.*})。例如。 "vm2"。不应删除 vm1 和 vm3 的文本块。
你有想法吗?
提前谢谢你。
Tzzaetaynzz
如果块由空行分隔并且块内没有空行:
awk -v RS="" -v ORS="\n\n" '!/vm2/' file
注意我用了vm2
作为模式,大家可以根据自己的需要进行细化。例如:host_name +vm1
或其他。
-0777
读取整个文件(undef记录分隔符)
-i
原地修改,
.BAK
备份扩展名为 .BAK 的文件
perl -0777 -i.BAK -pe 's/define host\{[^{]*vm2.*?\}//gs' config_file
我试图从 Nagios 配置文件中删除多行。但是我失败了很多次。现在我向你求助。
Nagios 配置文件:
define host{
use linux-host
host_name vm1
alias vm1
address 1.2.3.4 }
define host{
use linux-host
host_name vm2
alias vm2
address 1.2.3.4
}
define host{
use linux-host
host_name vm3
alias vm3
address 1.2.3.4
}
我需要一个允许我删除整个文本块的通用命令(定义主机{.*})。例如。 "vm2"。不应删除 vm1 和 vm3 的文本块。
你有想法吗?
提前谢谢你。 Tzzaetaynzz
如果块由空行分隔并且块内没有空行:
awk -v RS="" -v ORS="\n\n" '!/vm2/' file
注意我用了vm2
作为模式,大家可以根据自己的需要进行细化。例如:host_name +vm1
或其他。
-0777
读取整个文件(undef记录分隔符)
-i
原地修改,
.BAK
备份扩展名为 .BAK 的文件
perl -0777 -i.BAK -pe 's/define host\{[^{]*vm2.*?\}//gs' config_file