shell - 用于删除与模式匹配的行以及不同缩进后的后续行的 Shell 脚本
问题描述
我的haxproxy配置如下:
frontend bocluster
bind <VIRTUAL IP>:8680
mode tcp
default_backend boservers
backend boservers
balance roundrobin
server boserver1 <HMASTER PRIVATE IP>:8780 check
server boserver2 <HSECMASTER PRIVATE IP>:8780 check
我必须删除从匹配模式开始的行和下一个后续行,直到以不同缩进开始的行,例如:如果我选择模式为frontend bocluster
,脚本必须删除此模式及其下的下三行。
解决方案
这个单线应该有帮助:(傻瓜)
awk -v p="YOURLINE" '$0~"^"p{d=1;next}d&&/^\S/{d=0}!d' file
- 用你想要的模式替换
YOURLINE
。 - 这个单行将删除整个数据“块”,而不是限制在模式之后的固定行。(在您的示例中,它是三行)。
小测试:
kent$ cat f
foo
a
b
c
d
bar
x
y
z
blah
some
thing
here
kent$ awk -v p="foo" '$0~"^"p{d=1;next}d&&/^\S/{d=0}!d' f
bar
x
y
z
blah
some
thing
here
kent$ awk -v p="bar" '$0~"^"p{d=1;next}d&&/^\S/{d=0}!d' f
foo
a
b
c
d
blah
some
thing
here
推荐阅读
- python - 仅在距上次执行时间已过两秒时执行方法
- sql - 如何在 Teradata 中运行不带参数的程序
- java - 有没有办法改变已经制作的物体的颜色?
- android - 禁用能力回到以前的活动
- c# - 如何从一组变量表达式聚合函数表达式
- ionic-framework - Sass 给出错误 Ionic serve 编译失败
- apache-kafka - Confluent Schema Registry:模式ID删除
- c# - 尝试在 C# 中使用 HttpClient 的现有实例时出现异常
- swift5.1 - 使用 @propertyWrapper 包装的属性不会返回包装类型
- java - Struts2如何绑定Set