Mark: 本系列博文只是記錄作者在Linux學習過程中的點點滴滴,新手可能參考,高手們就略過吧!!!
Linux學習總結:grep文本搜索工具
功能:根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,並把匹配的行打印出來,它的全稱爲“Global Regular Expression Print”,全局正則表達式,它默認是開放給所有用戶。
語法格式:Grep [option] pattern file
Option:命令選項,具體包含:
-v: --revert-match 反向選取,顯示不包含匹配文件的所有行;
-i: --ignore-case 忽略字符大小寫;
-c: --count 計算符合樣式的列數
-E: --extended-regexp 支持使用正則表達式;
-A: --after-context 除了顯示符合範本樣式的列之外,並顯示該行之後的內容
-B: --before-context除了顯示符合範本樣式的列之外,並顯示該行之前的內容
-C: --context除了顯示符合範本樣式的列之外,並顯示該行之前後的內容
-n: --line-number 在顯示符合樣式的那一行之前同時標記出該行的列數編號;
實例一、顯示文件“/tmp/testin.sh”裏面不包含“Linux”的所有行
命令:grep –v–n “Linux” /tmp/testin.sh
實例二、查詢文件“/tmp/testin.sh”裏關鍵字“Linux”不區分大小寫的所有行
命令:grep -v -n "Linux" /tmp/testin.sh
實例三、顯示包含大小寫“Linux”關鍵字的所有行,並計算總數
命令:grep -v -n -c "Linux" /tmp/testin.sh
正則表達式:是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能。
正則表達式元字符,其中:
字符匹配:
“.” : 匹配任意單個字符,如”grep.p”匹配grep後接一個任意字符;
“[]” : 匹配指定範圍內的任意個字符,如”[Gg]rep”匹配Grep 和grep;
“[^]” : 匹配不在指定範圍內的任意個字符,如”[^a-z]grep”匹配不包含”a-z”的字母開頭,緊接着grep;
位置錨定:
“^” : 行首定位符,”^grep”匹配所有以grep開頭的行;
“$” : 行尾定位符,”grep$”匹配所有以 grep結尾的行;
“^$”: 空白行;
“\<”: 錨定單詞的開始,如:”\<grep”匹配包含以”grep”開頭的單詞的行;
“\>”:錨定單詞的結束,如:”grep\>”匹配包含以”grep”結尾的單詞的行;
次數匹配:
“*” : 匹配零個或多個字符,如”*grep”匹配所有一個或者多個空格後接着grep的行;
“.*” : 匹配任意字符;
“\?” : 零次或者壹次,前面的字符可有可無,如”gr\?ep”,代表可以是grep,ep;
“\{m\}” : 重複m次,如”grep\{2\}”,匹配包含至少2個”grep”的行;
“\{m,\}”: 重複字符至少m次,如”grep\{2,\}”匹配至少有2個grep的行;
“\{m,n\}”: 重複字符至少m次,至多n次,如”grep\{2,3\}”匹配2至3個grep的行;
POSIX字符:
[:alnum:] :文字數字字符;
[:alpha:] : 文字字符;
[:digit:] : 數字字符;
[:graph:] : 非空字符(非空格、控制字符);
[:lower:] : 小字字符;
[:print:] : 非空字符,包括空格;
[:space:] : 所有空白字符(新行、空格、製表符);
[:upper:] : 大寫字符;
[:punct:] : 標點符號;
實例四、顯示文件“/tmp/test.grep”中單詞爲“Grep”、“grep”
命令:grep –n “[Gg]rep” /tmp/test.grep
實例五、顯示文件“/tmp/test.grep”中以“grep”開頭的行
命令:cat /tmp/test.grep | grep ^grep
實例六、顯示文件“/tmp/test.grep”中以“grep”結尾的行
實例七、顯示/tmp/test.grep中以至少一個空白字符結尾的行;
命令:grep -n "[[:space:]]\{1,\}$" /tmp/test.grep
待續!