grep 和 sed 的不同匹配结果

Different match results from grep and sed

我正在使用以下正则表达式来匹配 github 存储库路径: :/ 但是,我从 grepsed:

得到了不同的匹配结果
$ sed -nr 's|[:/]([^/]+/[^/]+)$||' <<< 'https://github.com/myuser/myrepo'

$ sed -nr '/[:\/]([^\/]+\/[^\/]+)$/p' <<< 'https://github.com/myuser/myrepo'  

$ grep -Eo '[:/]([^/]+/[^/]+)$' <<< 'https://github.com/myuser/myrepo'
/myuser/myrepo

这两个命令的结果不应该相同(除了 sed 省略前导 [:/])吗?

grep: grep (BSD grep) 2.5.1-FreeBSD
sed: sed (GNU sed) 4.2.2
OS: Mac OSX 10.9.5

如果您想要等效的 sed 作为您的 grep 命令,请使用:

sed -r 's#^.*([:/][^/]+\/[^/]+)$##' <<< 'https://github.com/myuser/myrepo'
/myuser/myrepo