代码之家  ›  专栏  ›  技术社区  ›  jojo

用正则表达式搜索,但仅用sed替换字符串的一部分

  •  0
  • jojo  · 技术社区  · 2 年前

    我正在尝试替换任何发生的 cwe.mitre.org.*.html (regex)URL并删除 .html 扩展,不更改任何其他类型的URL。

    例子:

    https://cwe.mitre.org/data/definitions/377.html
    http://google.com/404.html
    

    期望值:

    https://cwe.mitre.org/data/definitions/377
    http://google.com/404.html
    

    有没有办法在sed或其他工具中实现这一点?

    我试过了 sed -Ei 's/cwe.mitre.org.*.html/<REPLACEMENT>/g' file.txt ,但这行不通。有没有一条路可以到达目的地 <REPLACEMENT> 成为正则表达式?这个 sed 手册上似乎没有这么说?

    编辑:我对sed手册的看法是错误的。它确实提到了这一点,请参阅本手册的“5.7反向引用和子表达式”一节 https://www.gnu.org/software/sed/manual/sed.html .

    1 回复  |  直到 2 年前
        1
  •  1
  •   Ed Morton    2 年前
    $ sed 's/\(cwe\.mitre\.org.*\)\.html/\1/' file
    https://cwe.mitre.org/data/definitions/377
    http://google.com/404.html
    

    谷歌搜索了捕获组。