sed 字符串替换标志(GNU SED 独有)

字符串替换标志( flag )是 GNU SED 独有的。
如果你使用的是 Linux 系统,比如 Ubuntu、CentOS、RedHat、Debain 等系统则可以直接使用。 如果你使用的是 Mac 苹果电脑,那么必须使用 gsed ,自带的 sed 是没法使用的。

在前面的章节中,我们学习了 sed 中的 替换命令。也就是单字母 s 命令。

但这种替换非常的生硬,比如我们想把 TWLE.CN 全部替换为小写,我们必须自己去硬编码为 twle.cn

s/TWLE.CN/twle.cn

如果有多个匹配,我们岂不是要写到手软?

这种简单的转换,sed 不能有一个特殊字符来自动处理么?

为了解决这种手软到的问题, GNU sed 为字符串替换命令添加了一些特殊字符,哦,特殊标志 ( flag )。

本章节,我们就来讲讲几个重要的。

  • \l

    \l 标志用于指示后面出现的第一个字母转换为 小写。例如 \lTWLE.cn 的效果为 tWLE.cn

    范例

    下面的 sed 命令使用 \l 将字母 T 转换为 t

    [www.twle.cn]$ echo "I love www.TWLE.cn " | sed -n 's/www.TWLE.cn/www.\lTWLE.cn/p'
    

    运行上面的命令,输出结果如下

    I love www.tWLE.cn
    
  • \L

    \L 标志用于指示后面出现的所有字母都转换为 小写。例如 \LTWLE.Cn 的效果为 twle.cn

    范例

    下面的范例,我们将 www.TWLE.Cn 全部替换为小写。

    [www.twle.cn]$ echo "I love www.TWLE.Cn " | sed -n 's/www.TWLE.Cn/\L&/p'
    

    运行上面的命令,输出结果如下

    I love www.twle.cn
    

    还记得 符号(& 的作用吗?不记得的话,请移步 sed 特殊字符命令 &

  • \u

    \u 标志用于指示后面出现的第一个字母转换为 大写。例如 \utwle.cn 的效果为 Twle.cn

    范例

    下面的 sed 命令使用 \u 将字母 t 转换为 T

    [www.twle.cn]$ echo "I love www.twle.cn " | sed -n 's/www.twle.cn/www.\utwle.cn/p'
    

    运行上面的命令,输出结果如下

    I love www.Twle.cn
    
  • \U

    \U 标志用于指示后面出现的所有字母都转换为 大写。例如 \Utwle.cn 的效果为 TWLE.CN

    范例

    下面的范例,我们将 www.twle.cn 全部替换为大写。

    [www.twle.cn]$ echo "I love www.twle.cn " | sed -n 's/www.twle.cn/\U&/p'
    

    运行上面的命令,输出结果如下

    I love WWW.TWLE.CN
    
  • \E

    \E 标志必须和 \L\U 一起使用。

    \E 标志用于取消 \L\U 开启的特殊效果,也就是 \E 字符之后,\L\U 的设定不再起作用。

    范例

    下面的替换中,只有第一个单词会被替换为 大写字母

    [www.twle.cn]$ echo "I love twle.cn " | sed -n 's/twle/\Uwww.\Etwle/p'
    

    运行上面的命令,输出结果如下

    I love WWW.twle.cn
    
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.