如何正确替换URL的一部分?

时间:2019-05-18 15:58:41

标签: regex sed

我想替换内容为

txt文件中的example.txt文件的名称
whatever http://example.com/t25.txt whatever whatever
whatever2
whatever

,随机字符串中还有另一个txt文件名。
的结果 sed -i -E 's/\/(.*?)\.txt/b82/' example.txt命令是

whatever http:b82 whatever whatever
whatever

但我想要

whatever http://example.com/b82.txt whatever whatever
whatever2
whatever

我该如何正确做?

1 个答案:

答案 0 :(得分:0)

更精确的是:*?将匹配0或多个,而不是字符类别太宽(.,根本不匹配任何字符)的非贪婪量词([^/]*)非斜杠字符,以确保匹配不会跨越任何/边界。

也不要忘记在替换部分中添加不想更改的匹配部分:

s!/[^/]*\.txt!/b82.txt!

为了避免牙签综合症(s),我在这里为!改用了另一个定界符(即/\/[^\/]...)。