当前位置: 首页 > Linux

grep命令的使用&&正则表达式

时间:2023-04-06 04:43:35 Linux

正则表达式正则表达式是一种描述一些字符串的模式,它是由一些元字符和字符组成的字符串,而这些元字符是代表特殊含义的字符,即正则所表达的字符表达式引擎表示一些与其预期含义不同的字符。正则表达式的分类基本正则表达式扩展正则表达式这两类支持不同的元字符;基本正则表达式的元字符1、匹配字符:.:匹配任意单个字符[]:匹配范围内任意单个字符[^]:匹配范围外任意单个字符[:space:]:space[:upper:]:大写字母[:lower:]:小写字母[:alpha:]:所有字母[:alnum:]:所有数字和字母[:digit:]:所有数字[:punct:]:所有标点符号2、个数matches:*:匹配前面任意一个字符(包括0次)\?:匹配其前面字符0次或1次,即最多一次\+:匹配其前面字符1次或多次,即至少一次time\{m\}:匹配其前一个字符m次\{m,n\}:匹配其前一个字符至少m次,最多n次\{0,n\}:最多匹配前一个字符n次\{m,\}:匹配前一个字符至少m次Anchor^PATTERN$:用于PATTERN匹配整行^$:空行^[[:space:]]*$:空行或包含空白的行charactersWord:由非特殊字符组成的连续字符(字符串)都称为词\<或\b:前缀锚点\>或\b:结尾锚点\:匹配完整的词4、分组和引用:\(\):将括号内的内容作为一个整体进行匹配正则表达式引擎会将匹配到的内容从括号组对应的第一个左括号开始保存到变量\1中,将匹配到的内容保存到左第二个括号中到变量\2,依此类推;引用:引用是指可以在正则表达式中使用上一组匹配的内容,每组匹配的内容可能不同。你必须使用引文。使用\1、\2变量来引用相应括号中的PATTERN;\1\2...扩展正则表达式1的元字符匹配字符:.:匹配任意单个字符[]:匹配范围内的任意单个字符字符[^]:匹配范围外的任意单个字符[:space:]:空格[:upper:]:大写字母[:lower:]:小写字母[:alpha:]:所有字母[:alnum:]:所有数字和字母[:digit:]:所有数字[:punct:]:所有标点符号2.匹配次数:*:匹配前面任意一个字符(包括0次)?:匹配前面一个字符0次或1次,即最多一次+:匹配其前面字符1次或多次,即至少一次{m}:匹配其前一个字符m次{m,n}:匹配其前一个字符至少m次,至多n次{0,n}:最多匹配前一个字符ntimes{m,}:至少匹配前一个字符m次3.定位锚点:^:锚点在行首$:锚点在行尾\或\b:结尾锚定4、分组引用:():将括号内的内容作为一个整体匹配\1\2...5,或:|:左边整体或右上整体;C|cat:表示C或cat(c|C)at:表示cat或Cat正则表达式的使用正则表达式一般和其他一些命令一起使用,只要命令支持正则表达式引擎就可以使用正则表达式;下面介绍的grep命令是一个行处理文本的工具,它与正则表达式的使用大大提高了文本处理的效率。grep、egrep、fgrep命令介绍grep、egrep、fgrep一脉相承。它们的作用是输出与模式匹配的行。原理是从标准输入中寻找匹配给定模式的文件grep命令默认输出与模式匹配的行;grep命令默认支持基本的正则表达式;egrep命令默认支持扩展正则表达式,相当于grep-E;fgrep命令不支持正则表达式。grep命令的使用1.命令格式grep[OPTIONS]PATTERN[FILE...]grep[OPTIONS][-ePATTERN|-fFILE][FILE...]2.命令选项:--color=auto:yes着色后高亮显示匹配的文本-i,--ignore-case:忽略字符的大小写-o:显示匹配的字符图案;-v,--invert-match:显示不能被模式匹配的行;-E:支持使用扩展的正则表达式元字符;-q,--quiet,--silent:静默模式,即不输出任何信息;-A#:显示匹配的行和该行之后的#行-B#:显示匹配的行和它之前的行#line-C#:显示匹配的行和该行前后的#line的使用egrep命令与grep相同,命令选项相同;人物;当不需要使用元字符来编写模式时,最好使用fgrep;练习一、显示/etc/passwd文件中以bash结尾的行#grep"bash$"/etc/passwd2,显示/etc/passwd文件中的两位或三位数字#grep-E"(\<[1-9][0-9]\>)|(\<[1-9][0-9][0-9]\>)"/etc/passwd3,显示以'LISTEN'结尾的netstat-tan命令结果后跟0个、1个或多个空白字符#netstat-tan|grep"LISTEN[[:space:]]*$"4.添加用户bash、testbash、basher和nologin用户(nologin用户的shell为/sbin/nologin);然后在/etc/passwd文件中找到用户名与其shell名相同的行#grep-E"^([^:]+\>).*\1$"/etc/passwd5,显示默认当前系统root、centos或user1用户的shell和UID(如果这些用户不存在,请提前创建)#grep-E"^(\)"/etc/passwd|剪切-d:-f3,76。在/etc/rc.d/init.d/functions文件中找一个单词(单词中间可以有一个下划线)后面是一组小括号#grep-E"\<.*\>\(\)"/etc/rc.d/init.d/functions7,用echo输出一个路径,然后egrepfinds找出其路径基名;进一步使用egrep获取其目录名称和目录路径#echo/etc/sysconfig/network-script/ifdown-eth0|egrep-o"[[:alpha:]]+[^/]?[[:alnum:]]+$"#echo/etc/sysconfig/network-script/ifdown-eth0|egrep-o"(.*)/"|egrep-o"[[:alpha:]]+[^/]?[[:alpha:]]+/$"|egrep-o"[[:alpha:]]+[[:punct:]]?[[:alpha:]]+"#echo/etc/sysconfig/network-script/ifdown-eth0|egrep-o"/.*/"|egrep-o".*[[:alnum:]]+"8、查找ifconfig命令执行结果中1-255之间的数grep-E-o“\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"9.ifconfigens33命令结果中取出ip地址#ifconfigens33|grep-E-o"\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"