我想使用 sed
或类似工具来查找包含“something?
”的行并删除该行和所有后续行,直到第二次出现包含“fi
”的行。
示例...
如果我有以下文件 /somepath/somefile
包含:
...
# Test something?
if something
then
do something
if somethingelse
then
do somethingelse
fi
fi
...
我想查找并删除所有这些行,从包含“something?
”的行开始到包含第二个“fi
”的行
我可以使用 sed -n '/something?/q;p'
但我不确定如何在包含“fi
”的第二行之后添加一个条件来表示停止。任何帮助表示赞赏。
最佳答案
你用 awk 来做这个:
awk 'BEGIN { del=0 } /Test something\?/ { del=2 } del<=0 { print } /fi/ { del -= 1 }' your-file
关于awk - 删除多行 - 从 "patternA"匹配,到第二次出现 "patternB",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502712/