Per*_*ika 2 regex parsing sed match
我想像这样在正则表达式匹配之间打印部分:
echo "this is foo and another foo quux" | sed 's/this\(.*\)another.*/\1/'
Run Code Online (Sandbox Code Playgroud)
打印
is foo and
Run Code Online (Sandbox Code Playgroud)
什么是完全正常的,因为我希望在这个与另一个印刷品之间找到一部分.
但是,如果我想解析我的源代码并使用:
cat source_code | sed 's/.*AdulterateFood\(.*\)DangerousFood.*/\1/'
Run Code Online (Sandbox Code Playgroud)
而且我确实知道AdulterateFood和DangerousFood只有一次在源代码中,它仍然打印所有内容,整个文件:(我想知道为什么...... AdulterateFood和DangerousFood在不同的行.
谢谢你的建议.
sed默认打印每个输入行.如果您不想要这种行为,则需要添加-n选项.如果您希望它打印与RE匹配的行,则必须在替换命令的末尾添加"p"以告诉sed TO打印该行.所以这:
sed -n 's/.*AdulterateFood\(.*\)DangerousFood.*/\1/p' source_code
Run Code Online (Sandbox Code Playgroud)
似乎是你要求的,但由于你没有提供任何样本输入和预期输出,这只是一个猜测.