sed更换分隔符的妙用

10870阅读 0评论2019-10-12 zenith518
分类:LINUX

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

 
上一篇:bash模拟python __name__==__main__ 思想
下一篇:expect语句嵌入bash脚本的合体用法