5、grep正则表达式
正则表达式 用"一串符号"描述有共同属性的数据(用于过滤数据) 正则表达式 由正则符号组成 grep 作用就是在一堆数据里过滤自已想要的数据 格式 grep [选项] “正则表达式” 文件列表 (多个文件间用空格间隔) grep 'root' /etc/passwd /etc/shadow 命令 | grep [选项] ‘正则表达式’ | grep [选项] ‘正则表达式’ ps aux | grep 'httpd' 选项 可选的 不加选项时按默认方式处理数据 默认把与正则表达式匹配的数据输出到屏幕上 加选项的目的就是改变grep处理数据方式 正则表达式 必写项目 可以由普通字符数字符号组成 "" 如 grep root /etc/passwd 也可以由正则符号组成(元字符)'' 文件列表 多个文件间用空格间隔 先把第一个文件中的所有行处理完,再处理下一个文件中的所有行 处理数据从前边的命令来,依次处理命令输出的每一行数据 grep命令的处理顺序 1、以行为处理单位 2、对数据进行逐行处理,处理完当前行自动处理下一行,直到把所有行处理完为止 3、默认输出有与正则表达式匹配数据的行,到屏幕上 4、不加选项,按默认方式处理数据 选项 --color 把与正则表达式匹配的数据标红显示 -n 输出与正则表达式匹配的行在文件中的行号 -c 统计与正则表达式匹配的行数 -q 屏蔽默认输出 -i 忽略字母大小写匹配 -v 输出与正则表达式不匹配的行 -E 去掉正则表达式里的转义符号 正则表达式由正则符号组成(元字符) $ 匹配行尾 ^$空行 ^ 匹配行首 ^# ^a ^awk 以a开头后面wk跟着 . 匹配除换行符(n)之外的任意单个字符 grep '.$' a.txt 显示以'.'结尾的行 需要加转义符号‘’ * 匹配前边的字符或正则表达式 出现的次数 grep 'go*d' abc.txt 前面是g后面是d,1个0出现0次或多次 grep 'gooo*d' test.txt 前面是goo后面是d,1个0出现0次或多次 grep 'go.d' abc.txt '.'显示任意一个字符
()把正则表xt达式作为整体匹配 grep 'g(oo)*d' abc.txt //两个O出现零次到多次 grep -E 'g(oo)*d abc.txt' //-E去掉正则表达式里的转义符 .*匹配所有字符 | 或 grep 'root|daemon' /etc/passwd grep -E 'root|daemon' /etc/passwd grep -v -E '^$|^#' /etc/passwd []范围内匹配(匹配范围内的任意一个)出现的次数是一次 grep '[139]' test.txtxt 匹配指定的数字 grep -E '1|3|9' test.txt grep '[0-9]' test. 匹配所有的数字 grep '[#_-]' test.txt 匹配#_-的行 grep '[#-_]' test.txt 匹配从#到_的行 grep '[?!_-]' test.txt 范围内匹配字符 [awk] 匹配所有含有awk的行 [AWK] 匹配所有含有AWK所有的行 [a-z] 匹配所有的小写字母 [a-Z] 匹配所有的大写字母 [a-Z] 匹配所有的大小写字母 [a-zA-Z] 匹配所有的大小写字母 [a-Z0-9] 匹配所有数字和大小写字母 [^a-z]范围内取反 ^[0-9] 以数字范围内开头的行 ^[157] 以数字1开头以数字5开头以数字7开头 ^[^a-z] 不以小写字母任意开头的行 设置正则表达式出现次数,匹配正则表达式出现次数的符号(加""转义) * 匹配前边的正则表达式出现0次到多次 >=0 + 匹配前边的正则表达式出现1次到多次 >=1 ? 匹配前边的正则表达式出现0次到1次 <=1 {n,m}匹配前边的正则表达式出现指定的次数 {3} 匹配前边的字符或正则表达式出现2次 =3 {3,}匹配前边的字符或正则表达式至少出现2次 >= {3,5}匹配前边的字符或正则表达式至少出现2次最多出现4次 >=3 and <=5
例 grep --color -E 'g(000){3}' test.txt 3个0出现3次 grep --color -E 'g0{1}d' test.txt 1个0出现1次 grep --color -E '[0-9]{3}' test.txt 0-9任意一个数字连着出现3次 grep --color -E 'go*d' test.txt 出现0次到多次 grep --color -E ‘go+d’test.txt 出现1次到多次 grep --color -E 'go?d' test.txt 出现0次到1次 &; 匹配单词的开头 grep --color "&;th" test.txt 不是转义符号必须存在 &; 匹配单词结尾 grep --color "m&;" test.txt 例 head httpd.conf | grep -i '&;th' --color 显示以th开头的 head httpd.conf | grep -i 'on&;' --color 显示以on结尾的 匹配MAC地址的正则表达式 00:0c:29:C1:C1:FF 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f [0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-f]{2}: [0-9a-fA-F]{2} grep -E '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}' ifcfg-eth0 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |