grep 和 sed 的不同匹配结果
Different match results from grep and sed
我正在使用以下正则表达式来匹配 github 存储库路径:
:/
但是,我从 grep
和 sed
:
得到了不同的匹配结果
$ 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
我正在使用以下正则表达式来匹配 github 存储库路径:
:/
但是,我从 grep
和 sed
:
$ 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