regex - sed 无法仅打印匹配的正则表达式组

标签 regex linux

我有一些键值对参数。我需要按原样打印它们。 示例。

echo $X
(a=b) (c=d) (e=f)
echo "$X" | sed -E 's/([a-zA-Z0-9_]*=[a-zA-Z0-9_]*)/match/1'
echo "$X" | sed -E 's/([a-zA-Z0-9_]*=[a-zA-Z0-9_]*)/\1/1'
echo "$X" | sed -E 's/([a-zA-Z0-9_]*=[a-zA-Z0-9_]*)/\1/2'
echo "$X" | sed -E 's/([a-zA-Z0-9_]*=[a-zA-Z0-9_]*)/\1/3'

发布上面的表达式,我想一个一个地打印匹配组。在模式匹配中使用 .* 是贪婪的,并且只打印第一个或最后一个匹配组。如何以这种方式打印任何匹配的组。

这是我的预期输出。

a=b
c=d
e=f

最佳答案

这个 grep 单行代码可以做到:

grep -o '[^(]*=[^)]*'

例子:

kent$  grep -o '[^(]*=[^)]*' <<<'(a=b) (c=d) (e=f)' 
a=b
c=d
e=f

关于regex - sed 无法仅打印匹配的正则表达式组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58557438/

相关文章:

c++ - 如何动态确定libudev版本

sql - 在 Postgresql 中使用正则表达式从现有字符串创建新字符串

php - 从通过 PHP 执行的 traceroute 输出解析数据

c - linux下的C语言正常运行时间

linux - "Platinum UPnP"开源库是在基于 linux 的系统上实现 DLNA 系统的好选择吗?

javascript - 使用 javascript 替换换行符和逗号

regex - Vim Regex 列位置匹配

javascript - 总计数和特定顺序的正则表达式模式匹配

regex - BASH - If else, 正则表达式, OR

linux - 使用 SED 时 Shell 脚本错误