• 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 - 博客园

  • 相关阅读:
    Shell 函数
    Shell 流程控制
    Shell test 命令
    Shell echo命令
    python 类、模块、包的区别
    postgresql vacuum table
    ssh连接断开后 shell进程退出
    ubuntu 搭建 svn服务器,使用http方式访问
    如何查看apache加载了哪些模块
    maven 的使用
  • 原文地址:https://www.cnblogs.com/azureology/p/15833916.html
Copyright © 2020-2023  润新知