我想替换内容为
的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
我该如何正确做?
答案 0 :(得分:0)
更精确的是:*?
将匹配0或多个,而不是字符类别太宽(.
,根本不匹配任何字符)的非贪婪量词([^/]*
)非斜杠字符,以确保匹配不会跨越任何/
边界。
也不要忘记在替换部分中添加不想更改的匹配部分:
s!/[^/]*\.txt!/b82.txt!
为了避免牙签综合症(s
),我在这里为!
改用了另一个定界符(即/\/[^\/]...
)。