【发布时间】:2020-09-16 16:46:14
【问题描述】:
我正在尝试使用反向引用将所有匹配的 http 替换为 https:
示例test3.txt 文件:
http://stronka.wpblog.internal http://stronka.wpblog.internal
abc
jdfgijdf dfijog http://stronka.wpblog.internal dfgtdgrtg http://stronka.wpblog.internal/ sfdgth http://stronka.wpblog.internal/dupa drgfthj
ghj gjerioghj fhjdf http://stronka.wpblog.internal/
当我对 test3.txt 文件运行 sed 时:
~# sed -r 's#http(://.*.wpblog.internal)#https\1#g' test3.txt
https://stronka.wpblog.internal http://stronka.wpblog.internal
abc
jdfgijdf dfijog https://stronka.wpblog.internal dfgtdgrtg https://stronka.wpblog.internal/ sfdgth http://stronka.wpblog.internal/dupa drgfthj
ghj gjerioghj fhjdf https://stronka.wpblog.internal/
第 1 行第二个链接保持不变,第 2 行第三个链接保持不变,我迷路了,我怎么能告诉 sed 替换所有匹配的内容?
【问题讨论】:
-
使用
sed 's#http://#https://#g' -
这个怎么样:
sed 's/http:\/\//https:\/\//g' -
您的
.*正在消耗字符串的整个中间部分;将您的模式更改为:s#http(://.*.wpblog.internal)#\1#,这将是显而易见的。
标签: sed