我想使用sed
或类似工具查找包含" something?
"并删除该行和所有后续行,直到第二次出现包含" fi
"。
示例...
如果我有以下文件/somepath/somefile
包含:
...
# Test something?
if something
then
do something
if somethingelse
then
do somethingelse
fi
fi
...
我希望找到并删除所有这些行,从包含" something?
"的行开始通过包含第二个" fi
"
我能够删除所有以包含" something?
"使用sed -n '/something?/q;p'
直到文件末尾,但我不确定如何在第二行包含" fi
"之后添加一个条件来说停止。任何帮助表示赞赏。
答案 0 :(得分:3)
您使用Awk执行此操作:
awk 'BEGIN { del=0 } /Test something\?/ { del=2 } del<=0 { print } /fi/ { del -= 1 }' your-file
答案 1 :(得分:1)
使用GNU sed:
sed '/something?/,/fi/{/fi/N;d}' file
如果你想编辑你的文件&#34;就地&#34;使用sed的选项-i
。