出來混遲早是要還的,真心不想學這個啊,但是用處又很大,只有默默地撿起來。
1、基礎正規表示式練習
(1)搜尋特定字串——grep -n 'the' regular_express.txt
——反向選擇:grep -vn 'the' regular_express.txt
——取得不論大小寫的 the 這個字串:grep-in 'the' regular_express.txt
(2)利用中括號 來搜尋集合字元——grep -n 't[ae]st' regular_express.txt
——搜尋到有 oo 的字元:grep -n 'oo' regular_express.txt
——不想要 oo 前面有 g:grep -n '[^g]oo' regular_express.txt
——oo 前面不想要有小寫字元: grep -n '[^a-z]oo' regular_express.txt === grep -n '[^[:lower:]]oo' regular_express.txt
——要求字串是數字與英文——[a-za-z0-9]
——取得有數字的那一行:grep -n '[0-9]' regular_express.txt === grep -n '[[:digit:]]' regular_express.txt
=== grep -n '[0-9][0-9]*' regular_express.txt
[:lower:] 就是 a-z 的意思,那麼 [a-z]當然就是 [[:lower:]]
(3)行首與行尾字元 ^ $
——想要讓 the 只在行首列出——grep -n '^the' regular_express.txt
——想要開頭是小寫字元的那一行就列出——grep -n '^[a-z]' regular_express.txt === grep -n '^[[:lower:]]' regular_express.txt
——不想要開頭是英文本母——grep -n '^[^a-za-z]' regular_express.txt
^ 符號,在字元集合符號(括號)之內與之外是不同的! 在 內代表『反向選擇』,在 之外則代表定位在行首的意義!
——想要找出行尾結束為小數點 (.) 的那一行——grep -n '\.$' regular_express.txt
因為小數點具有其他意義(底下會介紹),所以必須要使用跳脫字元(\)來加以解除其特殊意義!
所以不加\,grep -n '.$' regular_express.txt 輸出的是每一行的最後乙個字元。
——想要找出『空白行』,該行並沒有輸入任何資料——grep -n '^$' regular_express.txt
(4)任意乙個字元 . 與重複字元 *
萬用字元 * 可以用來代表任意(0 或多個)字元, 但是正規表示法並不是萬用字元,兩者之間是不相同的! 至於正規表示法當中的『 . 』則代表『絕對有乙個任意字元』的意思!這兩個符號在正規表示法的意義如下:
. (小數點):代表『一定有乙個任意字元』的意思;
* (星星號):代表『重複前乙個字元, 0 到無窮多次』的意思,為組合形態
——找出 g??d 的字串—— grep -n 'g..d' regular_express.txt
——列出有 oo, ooo, oooo 等等的資料, 也就是說,至少要有兩個(含) o 以上——grep -n 'ooo*' regular_express.txt
因為 * 代表的是『重複 0 個或多個前面的 re 字元』的意義, 因此,『o*』代表的是:『擁有空字元或乙個 o 以上的字元』, 特別注意,因為允許空字元(就是有沒有字元都可以的意思),因此,『 grep -n 'o*' regular_express.txt 』將會把所有的資料都列印出來螢幕上!『oo*』——第乙個 o 肯定必須要存在,第二個 o 則是可有可無的多個 o , 所以,凡是含有 o, oo, ooo, oooo 等,都可以被列出來~
——想要字串開頭與結尾都是 g,但是兩個 g 之間僅能存在至少乙個 o——grep -n 'goo*g' regular_express.txt
——想要找出 g 開頭與 g 結尾的字串,當中的字元可有可無——grep -n 'g.*g' regular_express.txt (注意不是g*g)
(5)限定連續 re 字元範圍 {}
限制乙個範圍區間內的重複字元數——{},但因為 的符號在 shell 是有特殊意義的,因此, 我們必須要使用跳脫字元 \ 來讓他失去特殊意義才行。所以就是這樣的:\
——找到兩個 o 的字串——grep -n 'o\' regular_express.txt
——找出 g 後面接 2 到 5 個 o ,然後再接乙個 g 的字串——grep -n 'go\g' regular_express.txt
——想要的是 2 個o 以上的 goooo....g——grep -n 'go\g' regular_express.txt
awk 則比較傾向於一行當中分成數個『字段』來處理。因此,awk 相當的適合處理小型的資料資料處理。
awk '條件型別 1 條件型別 2 ...' filename
awk 主要是處理『每一行的字段內的資料』,而預設的『欄位的分隔符為 "空格鍵" 或 "[tab]鍵" 』!
通常是『同乙個軟體包的不同版本之間,比較配置檔案與原始檔的差異』。
1、diff
diff 就是用在比對兩個檔案之間的差異的,並且是以行為單位來比對的!
diff 通常是用在同一的檔案(或軟體)的新舊版本差異上!
cmp 主要也是在比對兩個檔案,他主要利用『位元組』單位去比對。
將舊的檔案公升級成為新的檔案——『先比較先舊版本的差異,並將差異檔製作成為補丁檔,再由補丁檔更新舊檔案』即可。
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...