You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed/awk替换Ubuntu镜像源URL中未知的域名部分?

用sed或awk统一替换Ubuntu镜像源域名

方法一:使用sed命令

sed通过正则匹配精准定位各类Ubuntu官方源域名,实现全局替换:

# 预览替换效果(不修改原文件)
sed -E 's/http:\/\/([a-z]+.)?archive\.ubuntu\.com\/ubuntu\/?/http:\/\/mirror.sg.gs\/ubuntu/g' sources.list

如果需要直接修改原文件并自动备份:

# 生成原文件备份(sources.list.bak),同时修改原文件
sed -i.bak -E 's/http:\/\/([a-z]+.)?archive\.ubuntu\.com\/ubuntu\/?/http:\/\/mirror.sg.gs\/ubuntu/g' sources.list

正则说明:

  • ([a-z]+.)?:匹配可选的国家前缀(如us.、jp.),问号表示该部分可存在或不存在
  • \/ubuntu\/?:匹配路径部分,末尾的问号兼容带斜杠(/ubuntu/)和不带斜杠(/ubuntu)的写法
  • g:全局替换,确保一行中所有符合条件的域名都被替换

方法二:使用awk命令

awk通过字段定位(源URL是每行的第二个字段),针对性替换目标内容:

# 预览替换效果
awk '{sub(/http:\/\/([a-z]+.)?archive\.ubuntu\.com\/ubuntu\/?/, "http://mirror.sg.gs/ubuntu", $2); print}' sources.list

如果需要覆盖原文件:

awk '{sub(/http:\/\/([a-z]+.)?archive\.ubuntu\.com\/ubuntu\/?/, "http://mirror.sg.gs/ubuntu", $2); print}' sources.list > temp.list && mv temp.list sources.list

原理说明:

  • sub()函数在指定字段($2,即URL部分)中执行正则替换
  • 替换完成后打印整行,保证其他内容(如注释符号、发行版代号、仓库类型)不受影响

验证效果

替换后所有带国家前缀(us.、jp.)或默认的archive.ubuntu.com源都会被替换为mirror.sg.gs,完全匹配你给出的目标格式。

内容的提问来源于stack exchange,提问作者Liso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:45:36