如何让sed正则搜索仅部分内容大小写敏感,其余忽略大小写
sed部分正则匹配大小写敏感设置方案
方案1:GNU Sed兼容写法(依赖PCRE正则支持)
GNU Sed支持通过-P参数开启PCRE正则,配合内联修饰符(?i)动态开启/关闭大小写不敏感模式,符合要求的写法如下:
sed -nP '/^\s*[0-9]+.+\*FOOBAR=(?i).+\bfoo\b.+\bbar\b/p' F
原理说明:
- 默认正则为大小写敏感模式,因此前面的
FOOBAR=会严格匹配大小写完全一致的字符串 (?i)是内联大小写不敏感修饰符,从该位置开始后续的正则匹配自动忽略大小写,因此后面的foo、bar可匹配任意大小写组合(如Foo、BAR、fOo等)- 若
bar之后仍有需要严格匹配大小写的内容,可在bar后添加(?-i)恢复大小写敏感模式
方案2:全版本Sed兼容写法(无环境依赖)
如果使用的是不支持PCRE正则的POSIX标准Sed,可以直接枚举foo、bar的大小写组合实现忽略大小写匹配,所有Sed版本均支持:
sed -Ee '/^\s*[0-9]+.+\*FOOBAR=.+\b[Ff][Oo][Oo]\b.+\b[Bb][Aa][Rr]\b/' F
内容的提问来源于stack exchange,提问作者user15938505
相关产品推荐
相关产品推荐

