正則表達式(1)
正則表達式是計算機科學中的一個重要概念。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器中,正則表達式通常被用來檢索、替換符合某個模式的文本。許多程序設計語言都支持利用正則表達式進行字符串操作。(grep、sed、awk)
為什麽要學習正則表達式?
在工作中,我們做Linux運維工作,時刻面對著大量的日誌、程序、命令的輸出。迫切的需要過濾我們需要的一部分內容,甚至是一個字符串。
一、grep(grep全稱Global Regular Print)
1、作用
Linux系統中grep命令是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。grep,表示全局正則表達式版本,它的權限是所有用戶。
2、格式
grep [選項] 正則表達式 [文件]
3、常用選項
-c 只輸出匹配行的計數;
-i 不區分大小寫(只適用於單字符);
-h 查詢多文件時不顯示文件名;
-l 查詢多文件時只輸出包含匹配字符的文件名;
-L 只顯示不包含匹配模板的行的文件名清單;
-n 顯示匹配行及行號;
-s 不顯示不存在或無匹配文本的錯誤信息;
-n 在每一行前面打印改行在文件中的行數;
-v 顯示不包含匹配文本的所有行;
-w 只顯示完整單詞的匹配;
-x 只顯示完整行的匹配;
-r/-R如果文件參數是目錄 ,該選項將搜做該目錄下的所有子目錄和文件。
4、元素符號集
grep* (過濾)
過濾一般都是用"" ‘‘ 引號引起來
^lucky 表示搜索以lucky開頭的內容;
lucky$ 表示搜索以lucky結尾的內容;
^$ 表示空行,不是空格;(起排除空行作用)
. 代表且只能代表任意一個字符;(當前目錄,加載文件)
\ 轉義字符,讓有著特殊身份意義的字符,脫掉馬甲,還原原形 例如:\.只表示小數點,還原原始小數點的意義;
* 重復0個或者多個前面一個字符。不代表所有了。
.* 匹配所有的字符;
^* 任意多個字符開頭;
[abc] 匹配suoyou的字符合內任意一個字符[a-z]
[^adc] ^再中括號裏表示非,不包括a或b或c;
{n,m} 重復n到m次,前一個字符;
{n, } 重復至少次,多了不限;
{n} n次;
{0,m} 至多m次,少了不限。
擴展:egrep作用是在文件中查找指定的字符串。egrep執行效果如grep -E,使用語法及參數可參照grep指令,egrep與grep不同點解讀字符串的方法。
本文出自 “lucky” 博客,請務必保留此出處http://10433221.blog.51cto.com/10423221/1922732
正則表達式(1)