1:基礎正則表達式 grep
(正則表達式是匹配字符串使用的,郵箱手機號等等)
(1)* 前一個字符匹配 0 次或任意多次。
示例:
grep "a*" 1.txt 沒有任何意義 *可以有0次相當於全部匹配
grep "aa*" 1.txt 匹配至少包含一個a的字符串
grep "aaaaa*" 至少會匹配包含4個a的字符
(2). 匹配除了換行符外任意一個字符。
示例:
grep "." ./* 匹配當前文件夾的所有字符 .表示任意一個字符
grep "a..b" 1.txt 匹配在a,b之間至少包含兩個字符的字符串
(3)
^ 匹配行首。例如:^hello 會匹配以 hello 開頭的行。
$ 匹配行尾。例如:hello&會匹配以 hello 結尾的行。
示例:
grep "^M" 1.txt 查找以M開頭的字符。
grep "\.$" 1.txt 查找以.結尾的字符串 \.需要進行轉義。
而“$”則會匹配空白行:
示例:grep "^$" 1.txt ^$ 行首行尾都是空
grep -v "^$" 1.txt 取反匹配非空白行
(4)
[] 匹配中括號中指定的任意一個字符,只匹配一個字符。
例如:
[0-9] 匹配任意一位數字,
[a-z][0-9]匹配小寫字和一位數字構成的兩位字符。
grep "[a-z][0-9]" ./*
(1) [^]
匹配除中括號的字符以外的任意一個字符。
例如: [^0-9] 匹配任意 一位非數字字符,[^a-z] 表示任意一位非小寫字母。
(5)\ 轉義符。用於取消講特殊符號的含義取消。
(6)
\{n\}表示其前面的字符恰好出現 n 次。例如:[0-9]\{4\} 匹配 4 位數字,[1][3-8][0-9]\{9\} 匹配手機號碼。
\{n,\}表示其前面的字符出現不小於 n 次。例如: [0-9]\{2,\} 表示兩位及以上的數字。
\{n,m\} 表示其前面的字符至少出現n次,最多出現m次。例如: [a-z]\{6,8\}匹配 6 到 8 位的小寫字母。
示例:
grep "a\{3\}" 1.txt 匹配包含三個連續a的字符。
grep "[su]a\{3\}[il]" 1.txt
grep "a\{3,4\}" 1.txt 至少出現3個連續的a,最多4個連續的a.
擴展正則表達式 grep –E
+ 字符匹配 1 次或任意多次。
示例: o+gle”會匹配“gogle”、“google”或“gooogle”,當然如
果“o”有更多個,也能匹配。
? 前一個字符匹配 0 次或 1 次。
例如: u?r”可以匹配“colour”或“color”。
| “was|his”會匹配既包含“was”的行,也匹配包含“his”的行。
()配其整體為一個字符,即模式單元。可以理解為由多個單個字符組成的大字符。
如“(dog)+”會匹配“dog”、“dogdog”、“dogdogdog”等,因為
被()包含的字符會當成一個整體。但“hello (world|earth)”
會匹配“hello world”及“hello earth”。