【问题标题】:Different match results from grep and sedgrep 和 sed 的不同匹配结果
【发布时间】:2015-02-08 06:13:40
【问题描述】:

我正在使用以下正则表达式来匹配 github 存储库路径: :/ 但是,我从grepsed 得到不同的匹配结果:

$ 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

【问题讨论】:

    标签: regex bash shell sed grep


    【解决方案1】:

    如果您希望将 sed 等同于您的 grep 命令,请使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-24
      相关资源
      最近更新 更多