使用 grep 打印模式后的匹配词

print matching word after a pattern using grep

grep '[branch "default"]' -A 3 config | grep -Po 'merge = \K\w+'

这个 grep 命令打印 "master",这是我想要的,有没有办法用一个 grep 命令而不是两个 grep 命令来获得它?或任何其他解决方案?

文件配置有:

....
....
[branch "default"]
         remote = origin
         merge = master
....
....

使用 GNU grep:

grep -zoP '\[branch "default"\].*\n.*\n.*merge = \K\w+' filename

或使用 GNU sed:

sed -n '/\[branch "default"\]/{n;n;s/.*merge = \(\w\+\).*//p}' filename

输出:

master

试试这个:

grep -zoP '[branch "default"].\n.\n.*merge = \K\w+' filename