我想使用sed或类似的工具来查找包含“”的行something?并删除该行以及所有后续行,直到第二次出现包含“ fi”的行。
例子...
如果我有以下文件/somepath/somefile包含:
...
# Test something?
if something
then
do something
if somethingelse
then
do somethingelse
fi
fi
...
Run Code Online (Sandbox Code Playgroud)
我想找到并删除所有这些行,从包含“ something?”的行开始到包含第二个“ fi”的行
我可以something?使用删除从包含“”的行开始到文件末尾的所有行sed -n '/something?/q;p',但我不确定如何添加一个条件来在包含“ fi”的第二行之后停止。任何帮助表示赞赏。
您可以使用 Awk 执行此操作:
awk 'BEGIN { del=0 } /Test something\?/ { del=2 } del<=0 { print } /fi/ { del -= 1 }' your-file
Run Code Online (Sandbox Code Playgroud)