我正在使用以下正则表达式来匹配github repo路径:
:/
但是,我从grep
和sed
获得了不同的匹配结果:
$ sed -nr 's|[:/]([^/]+/[^/]+)$|\1|' <<< '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
操作系统:Mac OSX 10.9.5
答案 0 :(得分:1)
如果您想要与sed
命令等效grep
,请使用:
sed -r 's#^.*([:/][^/]+\/[^/]+)$#\1#' <<< 'https://github.com/myuser/myrepo'
/myuser/myrepo