Chinaunix首页 | 论坛 | 博客
  • 博客访问: 429476
  • 博文数量: 101
  • 博客积分: 1547
  • 博客等级: 上尉
  • 技术积分: 1072
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-12 23:46
个人简介

music,code,dialog,rest

文章分类

全部博文(101)

文章存档

2023年(8)

2022年(25)

2021年(6)

2020年(2)

2019年(6)

2018年(4)

2017年(5)

2016年(20)

2015年(4)

2014年(2)

2013年(1)

2012年(1)

2011年(1)

2010年(1)

2009年(2)

2007年(10)

2006年(3)

分类: LINUX

2019-10-12 13:05:52

sed 用于对含特殊字符处理时,需要用转义字符描述,使得字面含义非常难以理解。
sed 提供了一种分割符的转义用法,结合场景使用,使问题迎刃而解。
例如:
我们常用 sed 处理带路径的字符串,常要用转义符\ /来表述/,因为sed的习惯分割符是/。
这种情况为了简化表达,分隔符可以用#,这样/就可以直接当成字面含义使用,而免除转义的必要性了,从而提升了命令行代码可读性。
ex.
目标 替换    /a/b/c   为 b/c
传统:

点击(此处)折叠或打开

  1. echo /a/b/c | sed 's/\/a\///g'
优化后

点击(此处)折叠或打开

  1. echo /a/b/c | sed 's#/a/##g'
这样就容易理解多了。

另外,再其他指令处理的时候,需要增加特殊转义,才能让#生效, ex.
删除行  /a 开始的行
传统:

点击(此处)折叠或打开

  1. echo '/a/b/c
  2. /a/c/d
  3. /b/c/d' | sed '/\/a/d'
/b/c/d

优化后

点击(此处)折叠或打开

  1. echo '/a/b/c
  2. /a/c/d
  3. /b/c/d' | sed '\#/a#d'

/b/c/d


2019/10/12

 
阅读(10337) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~