我想获得有关如何使用cygwin的帮助,该软件具有bash来编写以下脚本:
我有一个包含以下内容的txt文件:
action "action1"
reset
type xformbin
http-method-limited POST
http-method-limited2 POST
exit
action "action2"
reset
admin-state disabled
type results
http-method-limited POST
http-method-limited2 POST
exit
action "action3"
reset
admin-state disabled
type setvar
http-method-limited POST
http-method-limited2 POST
exit
我希望可以编写一个shell脚本来删除admin-state = disabled的块?
因此,我希望可以遍历txt文件,如果admin-state = disable,请从该特定块中删除“操作”和“退出”之间的所有内容。
我希望从示例文本中获得以下最终结果:
action "action1"
reset
type xformbin
http-method-limited POST
http-method-limited2 POST
exit
谢谢。
答案 0 :(得分:0)
您有perl吗?
local $/="exit";
while (<>) {
print if not /admin-state disabled/;
}
答案 1 :(得分:0)
因此,如果整个块在中间处于“禁用”状态,则希望将其忽略,但如果没有,则将其打印出来。
sed -n '
/action/,/exit/ {
/action/ { x; d; }
H;
/exit/ { x;
/disabled/ d;
p; d;
}
}' x
除非从action
到exit
的一个区块中,否则此操作将无效。在那些-
如果一行中有action
,请将其存储并删除模式空间以触发下一次读取。
否则,将行添加到存储的保留空间中。
如果该行包含exit
,
disabled
,请将其删除以触发读取下一条记录; 输出:
$: sed -n '
/action/,/exit/ {
/action/ { x; d; }
H;
/exit/ { x;
/disabled/ d;
p; d;
}
}' infile
action "action2"
reset
admin-state enabled
type xform
http-method GET
http-method-limited POST
http-method-limited2 POST exit
希望有帮助。