linux sed 分隔符 简介

目录

简介

竖线 |

@ 字符

反引号(`)

感叹号 !

结论


简介

到目前为止,我们只使用过一种 分隔符,那就是 反斜杠(/

假设我们需要使用 sed 将输入源中的 /bin/sed 替换为 /home/yufei/bin/sed

因为 / 是模式分隔符,我们不得不对它进行转义,即 \/

[www.twle.cn]$ echo "/bin/sed" | sed 's/\/bin\/sed/\/home\/yufei\/bin\/sed/'

运行结果如下

/home/yufei/bin/sed

结果看起来是正确的。但是整个 sed 命令看起来就有点难以阅读了。更何况一个不小心,就会把替换的命令写错。例如

s/\/bin\/sed/\/home\/yufei\/bin\/sed/

其实 sed 允许使用其它的分隔符的,比如

  • 竖线(|
  • at 符号 (@
  • 反引号(`)
  • 感叹号(!

本章接下来的内容,我们就来简单介绍下这几种分隔符的用法

竖线 |

竖线(| 应该是 反斜杠(/ 之外用的最多的分隔符了。

竖线能够显著改善 sed 模式语句的可读性。

例如上面的命令,我们使用竖线作为分隔符,则可重写为

[www.twle.cn]$ echo "/bin/sed" | sed 's|/bin/sed|/home/yufei/bin/sed|'

运行结果如下

/home/yufei/bin/sed

@ 字符

@ 字符同样也可以作为分隔符,不过可读性就没有竖线那么高了。

[www.twle.cn]$ echo "/bin/sed" | sed 's@/bin/sed@/home/yufei/bin/sed@'

运行结果如下

/home/yufei/bin/sed

看到 s@ 和 sed@ ,这 TMD 是什么鬼啊,我个人感觉可读性变差了好多。

/home/jerry/src/sed/sed-4.2.2/sed

反引号(`)

反引号(`)同样可以作为分隔符,不过可读性差了些

[www.twle.cn]$ echo "/bin/sed" | sed 's^/bin/sed^/home/yufei/bin/sed^'

运行结果如下

/home/yufei/bin/sed

看到 反引号(`),我们第一个想到的是什么?

对,就是正则表达式中的 匹配行首

因此,可读性和可理解性那就更差了。

个人觉得最差,没有之一。

感叹号 !

感叹号(! 同样可以作为分隔符。可读性和可理解性都是差到了极点了。

[www.twle.cn]$ echo "/bin/sed" | sed 's!/bin/sed!/home/yufei/bin/sed!'

运行结果如下

/home/yufei/bin/sed

看到 感叹号(!,你第一个想法是什么? 这不就是 条件测试 中的 取反 么?

这个可读性和理解性,可以和 反引号(`) 有的一拼了。

结论

sed 除了支持 反斜杠(/ 这一种分隔符,还支持其它的分隔符。

但我们最推荐的,还是 竖线(|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值