sed支持扩展正则表达式

需求

使用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 - 博客园

上一篇:Kubernetes 【网络组件】CNI网络对比:Flannel、Calico


下一篇:利器 | 测试必会之 Linux 三剑客 ( grep / awk / sed )