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