天天看點

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}}'      

繼續閱讀