sed使用正则表达式进行替换例子以及注意事项

 更新时间:2024年03月16日 09:08:43   作者:panfei263031  
在使用sed替换时,可以使用正则表达式分组来保留部分匹配内容,下面这篇文章主要给大家介绍了关于sed使用正则表达式进行替换例子以及注意事项的相关资料,需要的朋友可以参考下

sed中使用正则表达式进行替换的时候,一定要注意,有些特殊字符在使用时要转义,目前发现的有:

  • 用于分组的小括号:(),在使用时要用\进行转义,但是匹配字符串中真正的小括号时,无需转义;
  • 表示前面的表达式出现次数的{},也要转义;
  • 表示前面的表达式出现1次或多次的+,也要转义,在使用时,要用\+
  • 表示前面的表达式至多出现1次?,也要转义,在使用时,要用\?

不需要转义的特殊字符:

  • 用于表示字符集的[]
  • 表示前面的表达式出现0次或多次的*

有些特殊字符在sed的正则表达式中不能用,比如要表示匹配一个数字不能用\d,而要用[0-9],例如:

#想要把u8Speed中的8替换为32,方法一失败,方法二成功:
>echo "u8Speed" |sed -e 's/\d/32/g'
>u8Spee32

>echo "u8Speed" |sed -e 's/[0-9]/32/g'
>u32Speed

但是\b、\w可以用,分别表示单词边界,字母数字下划线即[a-zA-Z0-9_]

此贴持续更新,后续发现需要转义的或者不需要转义的,会不断更新。

sed使用正则表达式替换的例子:

#例1:
>echo "VAR(int, AAAAA) b;" |sed -e 's/\bVAR(\([a-z]\{1,\}\),\( \)*\([A-Z]\+\))/\1/g'
>int b;
#上面的命令中,{}、+、()都进行了转义
#此命令的功能是,将autosar风格的变量定义,转换成常见的变量定义,上述命令输出结果为:
#int b;

#例2:
对于宏进行替换:

#define GetData(u8, speed, (int)ZERO)   u8speed[(int)ZERO]
>echo "GetData(u8, speed, (int)ZERO);" |sed -e 's/\bGetData(\?\(\w\+\), *\(\w\+\), *\((\?\w\+)\?\)\(\w\+\))/\1\2[\3\4]/g'
>u8speed[(int)ZERO]

附:sed 关键字匹配整行中任意字符进行替换(正则表达式整行替换)

语法:

sed -i 's/.*要查找的字串符.*/要替换的字串符/' a.txt

实战示例:
场景:
查找文本文件 [a.txt] 中包含字串符 [privatekey] 的行将其替换为 123456.
执行命令如下:
sed -i 's/.*privatekey.*/123456/' a.txt

执行替换前:

执行前结果图

执行替换后:

执行后结果图

总结 

到此这篇关于sed使用正则表达式进行替换例子以及注意事项的文章就介绍到这了,更多相关sed正则表达式替换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell字符截取命令之cut命令的实例详解

    shell字符截取命令之cut命令的实例详解

    这篇文章主要介绍了shell字符截取命令之cut命令的实例详解的相关资料,希望通过本文大家能够掌握这部分内容,需要的朋友可以参考下
    2017-09-09
  • Shell脚本判断用户的输入内容

    Shell脚本判断用户的输入内容

    今天小编就为大家分享一篇关于Shell脚本判断用户的输入内容,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 用shell脚本和c语言将大写字母转成小写的代码

    用shell脚本和c语言将大写字母转成小写的代码

    最近在学shell编程,在网上看到tr '[:upper:]' '[:lower:]' 可以把字符串中大写字母转换成小写字母,我就在这个的基础上写了一个脚本来自己学习学习
    2013-08-08
  • Shell脚本while、until循环语句简明教程

    Shell脚本while、until循环语句简明教程

    这篇文章主要介绍了Shell脚本while、until循环语句简明教程,简洁易懂的简明教程,需要的朋友可以参考下
    2014-07-07
  • 解析spark源码yarn-cluster模式任务提交

    解析spark源码yarn-cluster模式任务提交

    这篇文章主要为大家解析了spark源码中yarn-cluster模式任务提交方式,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步,早日升职加薪
    2021-09-09
  • Linux使用文本编辑器vi常用命令

    Linux使用文本编辑器vi常用命令

    vi就是一种功能强大的文本编辑器,而vim则是高级版的vi,不但可以用不同颜色显示文字内容,还能进行诸如shell脚本、C语言程序编辑等功能,可以作为程序编辑器。下面通过本文给大家介绍linux 文本编辑器vi常用命令,一起看看吧
    2017-09-09
  • 使用shell脚本来给mysql加索引的方法

    使用shell脚本来给mysql加索引的方法

    今天小编就为大家分享一篇关于使用shell脚本来给mysql加索引的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • linux中mysql备份shell脚本代码

    linux中mysql备份shell脚本代码

    在linux中如果想定时备份数据库的脚本我们可以很方便简单的操作,下面我来分享一段mysql定时备份的脚本代码
    2013-02-02
  • getopts解析shell脚本命令行参数的方法

    getopts解析shell脚本命令行参数的方法

    getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数,这篇文章主要介绍了getopts解析shell脚本命令行参数,需要的朋友可以参考下
    2023-01-01
  • Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享

    Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享

    这篇文章主要介绍了Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享,能够测试CPU和内存的占用状况以及HTTP端的异常,需要的朋友可以参考下
    2016-03-03

最新评论