如何使用sed在查找替换时保留原字符串的大小写格式?
使用sed实现保留原字符串大小写的替换操作
需求说明:将文本中所有foo(含任意大小写组合)替换为bar,同时严格保留原字符串的大小写格式,例如:
foo→barFoO→BaRfOO→bARFOO→BAR
解决方案
由于foo的大小写组合共有8种,我们可以通过逐个匹配对应组合并替换的方式实现需求,这种方式直观且易于维护。
方法1:直接在命令行执行sed命令
sed -E ' s/FOO/BAR/g; s/Foo/Bar/g; s/fOO/bAR/g; s/FoO/BaR/g; s/fOo/bAr/g; s/foO/baR/g; s/FOo/BAr/g; s/foo/bar/g ' input.txt
方法2:使用sed脚本文件
创建名为replace_case.sed的脚本文件,内容如下:
#!/usr/bin/sed -E # 匹配所有大小写组合并对应替换 s/FOO/BAR/g s/Foo/Bar/g s/fOO/bAR/g s/FoO/BaR/g s/fOo/bAr/g s/foO/baR/g s/FOo/BAr/g s/foo/bar/g
赋予脚本执行权限后运行:
chmod +x replace_case.sed ./replace_case.sed input.txt
效果验证
假设输入文本input.txt内容为:
foo FoO fOO FOO Hello foo World Test FoO Example
执行替换后输出:
bar BaR bAR BAR Hello bar World Test BaR Example
内容的提问来源于stack exchange,提问作者Anm
相关产品推荐
相关产品推荐

