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使用正则表达式替换的例子:文章来源地址https://www.toymoban.com/news/detail-421499.html

#例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中使用正则表达式进行替换以及注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式(拓展)、grep(拓展)和sed

      egrep默认使用的是 扩张正则 。   表示次数 * 匹配前面字符任意数 ? 0次或者1次 + 1次或者多次 {n} 匹配n次 {m,n} 最少m次,最多n次 {,n} 匹配前面的字符最多n次 {n,} 匹配前面的字符最少n次   表示分组 ()分组 将多个字符捆绑在一起当作一个整体处理 1、2 后向引用 | 或者 a|b

    2024年02月19日
    浏览(25)
  • SED正则表达式中[方括号]的特殊处理

    今天被这个方括号懵晕了,特此记录 例如: 去除输入字符串“1[2.3]4[ab,c]”中的所有方括号和逗号: $ echo \\\"1[2.3]4[ab,c]\\\"|sed -e \\\"s/[,][]//g\\\" 1[2.3]4[ab,c]   It doesn\\\'t work! 原因:Regular Expressions The right-square-bracket ( \\\']\\\' ) shall lose its special meaning and represent itself in a bracket expression if it oc

    2024年02月14日
    浏览(28)
  • 正则表达式、grep过滤工具、sed基本用法、sed基本操作指令、sed应用案例

    1.1 问题 本案例要求熟悉正则表达式的编写,完成以下任务: 利用grep或egrep工具练习正则表达式的基本用法 1.2 方案 表-1 基本正则列表 表-2 扩展正则列表 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:正则表达式匹配练习 1)基本正则表达式 测试 ^ $ [] [^] 测试 .

    2024年01月24日
    浏览(60)
  • Linux三剑客(awk、sed、grep) 和 正则表达式

    本文章适用于一定工作经验(熟悉Linux基础)的同行,欢迎各位大佬批判指正。 上手三剑客(grep,sed,awk)之前,需要熟悉正则表达式, 正则表达式 ——事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的

    2024年02月15日
    浏览(34)
  • Latex中正则表达式替换

    文章目录 前言 一、使用步骤 二、常用正则表达式 三、具体使用例子 本文主要是根据自己平时修改latex中不规范的格式,遇到的一些需要重复修改的一类问题,用正则表达式来提高修改效率。 例如:文中出现转置符号,应该使用命令top。正确示例:A^{top};错误示例:A^{T}。

    2023年04月22日
    浏览(45)
  • 经常使用的正则表达式以及用法

    正则表达式是一种用来匹配字符串的工具,它可以用特定的语法来描述文本中的一些模式,以达到快速检索、替换和处理文本的目的。 它的用处也是很多,比如文本编辑器、搜索引擎、数据库、邮件过滤、语言解析器、爬虫器等等。 工作中,我经常用正则表达式来提取、校

    2024年02月10日
    浏览(35)
  • 正则表达式概念以及语法的使用

    目录 1.概念 2. 为什么使用正则表达式? 3. 语法 1.普通字符 非打印字符 2. 特殊字符 3. 限定符 4. 定位符 5. 运算优先级 3.匹配规则 1. 基本模式匹配 2. 字符簇 3. 确定重复出现 正则表达式(Regular Expression) 是一种文本模式 , 包括普通字符(例如,a 到 z 之间的字母) 和特殊字符(

    2024年02月16日
    浏览(24)
  • Jmeter接口关联(三)【使用正则表达式提取值】以及正则表达式提取器中模板的含义及用法

    文章目录 前言 一、Jmeter中使用正则表达式匹配 1、选择 RegExp Tester 2、在线程组------》添加------》后置处理器-------里面添加一个“正则表达式提取器” 二、关于正则表达式提取器里面字段的解释 参数说明 三、进一步解释Jmeter正则表达式提取器中的模板 1、当模板设置为$0$ 

    2024年02月13日
    浏览(36)
  • eclipse正则表达式替换 Find/Replace

    CTRL+F 打开 Find/Replace 对话框 勾选 Regular expressions ​ 下图中的 Find : /.*/ ​ 换行符: R 下图中的 Find 表达式: R.*@Excel.* ​ /** 替换为 Rt/** ​ 下图中的 Find 表达式: .*private (.*) (.*); 下图中的 Replace with 表达式: t//变量类型$1;变量名$2Rtprivate 1 2; 括号 () 内的分组会被捕

    2024年01月21日
    浏览(29)
  • Notepad++工具通过正则表达式批量替换内容

    Ctrl+H弹出小窗口;查找目标输入$,替换为输入特定字符串;选中循环查找,查找模式选正则表达式;最后点击全部替换 Ctrl+H弹出小窗口;查找目标输入^,替换为输入特定字符串;选中循环查找,查找模式选正则表达式;最后点击全部替换 Ctrl+H弹出小窗口;查找目标输入 相

    2024年02月15日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包