grep与正则表达式

grep 强大的文本搜索过滤工具,从文件中搜索特定字符显示打印至终端窗口,另外还支持正则表达式与扩展正则表达式

1例子 grep 'nologin' /dev/passwd -m5 2-m 指定匹配次数,匹配N此后停止 3-i 不区分大小写 输入内容的大小写皆匹配出 4-n 显示匹配到行的行号 5-v 取反 输入字符外其他字符皆匹配 6-c 统计匹配到总行数 7-o 仅显示匹配的字符,不会整行显示 8-q 静默模式 匹配到的字符不会输出至终端窗口 9-A1 连带显示匹配行后的1行 10-B2 连带显示匹配行前的2行 11-C3 连带显示匹配行前后各三行 12-e 可跟多个关键字匹配 13-w 仅匹配关键字为单个单词 (数字、字母、下划线组成) 14-f 关键子从文件中匹配 15-E 使用扩展正则表达式 等同于 egrep 16
1   正则表达式 2

正则表达式,可以用特定符号代替某一类字符来进行匹配,可以指定匹配的位置、次数 、以及分组替用  字符匹配:

1列子 grep '[[:alnum:]]' /etc/passwd 2 . 匹配任意单个字符 3 [ ] 匹配中括号内任意单个字符 4 [^] 取反 如[^A] 匹配A以外所有字符 5 [:alnum:] 任意字母和数字 6 [:lower:] 任意小写字母 7 [:upper:] 任意大写字母 8 [:alpha:] 任意大小写字母 等同于[a-zA-Z] 9 [:blank:] 空白字符 10 [:space:] 空白字符 水平空白符和垂直空白符 11 [:cnatl:] 不可打印控制字符(退格、删除、警铃) 12 [:dinht:] 十进制数字 13 [:xdigit:] 十六进制数字 14 [:graph:] 可打印的非空白字符 15 [:print:] 可打印的字符 16 [:punct:] 标点符号 17

次数匹配:

1例子:grep '[[:alnum:]]*' /etc/passwd 2 * 匹配*号前字符任意次,包括零次 3 .* 匹配任意字符、任意长度 4 \? 匹配零次或一次 5 \{3\} 匹配3次 6 \{1,3\} 匹配前面字符出现最少1次,最多3次 7 \{,3\} 匹配最多3次 8 \{1,\} 匹配最少1次 9 另有扩展正则表达式,用法基本与正则表达式一致,扩展正则表达式中的次数匹配中\可直接省略不写 10 &emsp; 位置锚定: 11 12例子:grep '^[[:alnum:]]' /etc/passwd 13 ^ 行首锚定 一行的最坐侧 14 $ 行尾锚定 一行的最右侧 15 ^$ 匹配空行 或^[[:space:]]*$ 空行 16 \< 词首锚定 或\b 用在指定字符前 17 \> 词尾锚定 或\b 用在指定字符后 18

分组:

1\(\) 将一个或多个字符捆绑在一起,作为一个分组,一个整体 2例子 \(ace\) ace为一个整体 第一个分组可用\1直接代替,代表ace 3分组可多层套用 : \(string1\(string2\)\) 4\1 : string1\(string2\) 5\2 : string2 6 7\| 或 如1\|2 , 匹配1或2 8

代码交流 2021