sed中的特殊字符

SED命令中的特殊字符

SED分割符号

默认情况下,sed的分割符是反斜杠(/),如’s/abc/xyz/g’,会把abc替换为xyz,如下所示:

echo "this is abc" | sed 's/abc/xyz/g'
this is xyz

如果输入源中有分割符,则我们需要对分割符进行转义,如下所示:

echo "this is /a/b/c" | sed 's/\/a\/b\/c/\/x\/y\/z/g'
this is /x/y/z

这样功能是可以实现,但看起来有点眼花缭乱,再长一些就很难读懂,特别是在输入源有路径的情况下,看起来更乱。而且写的时候稍微不注意就错了,如少写了一个转义,则会报错。如下所示:

echo "this is /a/b/c" | sed 's//a\/b\/c/\x\/y\/z/g'
sed:-e 表达式 #1,字符 12:“s”的未知选项

a的前面少写了转义字符,则sed报错。
sed是允许其他分隔符的:不论什么字符,紧跟着s后面的都会被认为是分隔符。如

[zy@fedora ~]$ echo "this is /a/b/c" | sed 's#/a/b/c#/x/y/z#g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's@/a/b/c@/x/y/z@g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's!/a/b/c!/x/y/z!g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's|/a/b/c|/x/y/z|g'
this is /x/y/z
[zy@fedora ~]$ echo "this is /a/b/c" | sed 's_/a/b/c_/x/y/z_g'
this is /x/y/z

这些紧跟在s后面的字符(#、@、!、|、_)都可以作为分隔符,换成这样的表达方式就会清晰很多,推荐使用竖线(|)。当然,如果是输入源/输出内容中有分隔符,依然需要使用反斜杠进行转义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值