需求
使用sed对ubuntu apt source快速换源,希望同时兼容两种地址
deb http://archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted
替换后
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted
实现
先说结论,不感兴趣过程的后面可以不看啦。
sudo sed -ri 's/(cn.)?archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
尝试
添加optional关键词匹配
sudo sed -i 's/(cn.)?archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
并没有预期效果
查阅
手册man sed
指出:普通sed
仅支持basic regx
而()?
属于扩展用法,需要采用-E
或-r
参数激活
DESCRIPTION
Sed is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline). While in some ways
similar to an editor which permits scripted edits (such as ed), sed works by making only one pass over the input(s), and is consequently more efficient. But it
is sed's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression=script
add the script to the commands to be executed
-f script-file, --file=script-file
add the contents of script-file to the commands to be executed
--follow-symlinks
follow symlinks when processing in place
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
-l N, --line-length=N
specify the desired line-wrap length for the `l' command
--posix
disable all GNU extensions.
-E, -r, --regexp-extended
use extended regular expressions in the script (for portability use POSIX -E).
SEE ALSO
【实用】ubuntu和python快速换源 - azureology - 博客园