脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - shell - sed使用正则表达式进行替换例子以及注意事项

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

2024-03-18 16:33panfei263031 shell

在使用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使用正则表达式进行替换例子以及注意事项

总结 

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

原文链接:https://blog.csdn.net/panfei263031/article/details/127077145

延伸 · 阅读

精彩推荐
  • shellgetopts解析shell脚本命令行参数的方法

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

    getpots是Shell命令行参数解析工具,旨在从Shell Script的命令行当中解析参数,这篇文章主要介绍了getopts解析shell脚本命令行参数,需要的朋友可以参考下...

    yayagogogo8662023-03-20
  • shellsed初学者实用说明

    sed初学者实用说明

    sed是一个非交互性文本流编辑器,可以与vi一样对文本进行编辑,但其可以在命令行或shell脚本中执行,从而避免了繁重的人机交互式的文件编辑操作...

    脚本之家10872022-12-08
  • shellssh(ssh-keygen)配置免输入密码登录远程主机的方法

    ssh(ssh-keygen)配置免输入密码登录远程主机的方法

    这篇文章主要是介绍ssh(ssh-keygen)配置免输入密码登录远程主机的方法,供大家学习参考...

    脚本之家9332022-12-14
  • shellLinux进程通信(IPC)方式简介

    Linux进程通信(IPC)方式简介

    linux下进程间通信的几种主要方式:管道(pipe)和有名管道(FIFO)、信号(signal)、消息队列、共享内存(shared memory)、信号量(semaphore)、套接字(s...

    脚本之家11952022-12-25
  • shellShell脚本test命令使用总结和实例

    Shell脚本test命令使用总结和实例

    这篇文章主要介绍了Shell脚本test命令使用总结和实例,分别对数字测试、字符串测试、文件测试做了总结,并给出了实际使用例子,需要的朋友可以参考下...

    shell教程网3702023-02-16
  • shellShell 脚本自动输入密码的三种方式小结

    Shell 脚本自动输入密码的三种方式小结

    本文主要介绍了Shell 脚本自动输入密码的三种方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    不食花生的猫7182023-02-28
  • shelllinux基础之Shell Script入门介绍

    linux基础之Shell Script入门介绍

    本文介绍下,学习shell script编程的入门知识,通过几个入门实例,带领大家走进shell script的神圣殿堂,呵呵,有需要的朋友参考下...

    shell教程网11342022-12-22
  • shell使用VLC实现自动播放视频的操作方法

    使用VLC实现自动播放视频的操作方法

    VLC是一款开源的多媒体播放器,它支持大量的视频和音频格式,并且具有强大的脚本和编程接口,这篇文章主要介绍了使用VLC实现自动播放视频,需要的朋友可以...

    Rocky_dmy3732024-03-18