GREP:仅显示Regex组中匹配的内容



我只能在Regex组中匹配什么?

例如,从:

获取
some text ... <a href='...'/user/9082/>... </a>

仅来自/user/9082/的数字:

9082

我尝试了什么:

echo "some text ... <a href='...'/user/9082/>3435435345345</a>" | grep -Eo "/user/([0-9]+)/"

使用sed

$ echo "some text ... <a href='...'/user/9082/>3435435345345</a>" |
> sed -E 's|^.*/user/([0-9]+)/.*$|1|'
9082

您说"我也可以使用sed和其他方法",这意味着您知道sed是正确的工具,但是您不想使用它。您能详细说明为什么吗?grep用于搜索,sed用于格式化。

您可以使用Bash Regex:

str="some text ... <a href='...'/user/9082/>... </a>"
re="/user/([0-9]+)/"
[[ $str =~ $re ]] && echo ${BASH_REMATCH[1]}

使用 grep

echo "some text ... <a href='...'/user/9082/>3435435345345</a>"  | grep -o '/user/[0-9]+/'

相关内容

  • 没有找到相关文章