linux下vim、sed、grep、awk忽略大小写总结

本文转自:http://www.361way.com/page/30

默认情况下 vim 的查找都是区分大小写的, 这种查找方式有利于准确快速的定位到目标, 但是有时候vim的使用者也不一定能够确认那个单词的大小写情况, 这种情况下就要用到大小写忽略了.
实现这个操作有两种方式.

方式1 指令设定:


:set ic(ignorecase 的缩写)忽略大小写:set noic(noignorecase 的缩写)不忽略大小写


输入了上述指令, 当每次的查找操作都会受到当前设定的影响,不过每次在退出vim编辑后,再重新打开以后的设置仍旧失效。

注:编辑状态下的设置相当于临时修改了vim的环境变量,当重新使用vim时,其又会默认的.viminfo文件中读入默认的环境变量设置 。

方式2 查找符号设定:


/\CWord 区分大小写的查找/\cword 不区分大小写的查找


这个操作针对当前的查找有效, 所以不必考虑下次查找操作是否会受到影响.


对grep sed awk工具忽略大小写的扩展

谈到vim对文本的处理,不自觉的就联想到以上三个工具对文本的处理。现对此做下对比。首先是grep对忽略大小写的处理,这个最简单,直接在-i参数即可:


-i,--ignore-case         ignore case distinctions


接下来是sed对文本忽略大小写的处理。这个要稍微麻烦些。不过在sed的帮助文档中还是找到下面一段:


    I          Match REGEXP in a case-insensitive manner.(This is a GNU extension.)


从上面这段帮助上不难看出,使用大写I可以进行大小写忽略处理。下面使用两个简单的示例说明下。如我有如下一个文档:


[root@gateway2 ~]# cat a.txtAAaabbcc

然后通过sed可进行如下处理

[root@gateway2 ~]# sed -n '/aa/Ip' a.txtAAaa//d参数为删除[root@gateway2 ~]# sed -e '/aa/Id' a.txtbbcc


最后是awk对忽略大小写的处理。awk在这方面做的也比较好,其内置了一个IGNORECASE变量,专门用于处理大小写的忽略。当IGNORECASE的值为真时,则进行忽略大写的匹配。示例如下:


[root@gateway2 ~]# cat a.txt |awk '/aa/' IGNORECASE=1AAaa本处仍使用的上面的a.txt

另一个示例:

echo "Mary"| awk 'BEGIN{IGNORECASE=1}{if($0=="mary"){print $0}}'

该示例的输出结果是Mary


你可能感兴趣的:(linux,忽略大小写)