我如何可以grep只在什么正则表达式匹配的组相匹配?grep的:只显示什么正则表达式组
例如,得到:
some text ... <a href='...'/user/9082/>... </a>
只有数字从/user/9082/
:
9082
我已经试过:
echo "some text ... <a href='...'/user/9082/>3435435345345</a>" | grep -Eo "/user/([0-9]+)/"
我如何可以grep只在什么正则表达式匹配的组相匹配?grep的:只显示什么正则表达式组
例如,得到:
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
用于格式化。
使用grep
echo "some text ... <a href='...'/user/9082/>3435435345345</a>" | grep -o '\/user\/[0-9]\+\/'
这不是OP所要求的,他只想要数字,你的答案打印'/ user/9082 /'。 – dimo414
你可以使用一个bash正则表达式:中
str="some text ... <a href='...'/user/9082/>... </a>"
re="/user/([0-9]+)/"
[[ $str =~ $re ]] && echo ${BASH_REMATCH[1]}
可能的复制http://superuser.com/questions/11130/can-gnu-grep-output-a - 选择组 – dimo414