当前位置: 首页 > Linux

sed中的转义字符

时间:2023-04-06 11:52:11 Linux

SED命令中的特殊字符SED分隔符默认情况下,sed的分隔符是反斜杠(/),比如's/abc/xyz/g',会将abc替换成xyz,如如下所示:echo"thisisabc"|sed's/abc/xyz/g'thisisxyz如果输入源中有分隔符,我们需要对分隔符进行转义,如下所示:echo"thisis/a/b/c"|sed's/\/a\/b\/c/\/x\/y\/z/g'这个是/x/y/z这个功能是可以实现的,但是看起来有点眼花缭乱,而且是越来越难读了,尤其是输入源有路径的时候,看起来就更乱了。而且写的时候不注意,就会出错。如果错过转义,就会报错。像这样:echo"这是/a/b/c"|sed's//a\/b\/c/\x\/y\/z/g'sed:-eexpression#1,char12:如果在"的未知选项a前面缺少转义字符s”,sed会报错。sed允许其他分隔符:无论是什么字符,紧跟在s之后的都将被视为分隔符。如[zy@fedora~]$echo"thisis/a/b/c"|sed's#/a/b/c#/x/y/z#g'这是/x/y/z[zy@fedora~]$echo"这是/a/b/c"|sed's@/a/b/c@/x/y/z@g'这是/x/y/z[zy@fedora~]$echo"这是/a/b/c"|sed's!/a/b/c!/x/y/z!g'这是/x/y/z[zy@fedora~]$echo"这是/a/b/c"|sed's|/a/b/c|/x/y/z|g'这是/x/y/z[zy@fedora~]$echo"这是/a/b/c"|sed's_/a/b/c_/x/y/z_g'thisis/x/y/z这些紧跟在s后面的字符(#,@,!,|,_)都可以作为分隔符,它会更改为此表达式会更清楚。建议使用竖线(|)。当然,如果输入源/输出内容中有分隔符,还是需要用反斜杠转义。