您的位置:首页 > 运维架构 > Linux

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

2014-03-03 15:33 761 查看
本文转自: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: