grep之正则表达式的理解及应用
正则表达式在本周学习中是个难点和重点,其中难免会有很多坑,也难免会不停的往里跳,当跳的比较多了也就长记性了,通过很多次练习慢慢也就能发现其中暗藏玄机,成功的避开大坑选择往小坑里跳了,我相信在以后的学习中会不断进步、勤加练习终究会跳出来的。好了,以下是本人对正则表达式的一点理解,如有错误之处请联系我,会修改和学习的。 一、正则表达式之grep. 正则表达式是一种符号表示法,用于识别文本模式。Linux处理正则表达式的主要程序是grep。grep搜索与正则表达式匹配的行,并将结果输送至标准输出。 (1)正则表达式之匹配模式。 ①格式 grep按下述方式接受选项和参数(其中,REGEXP表示正则表达式) grep [option]REGEXP file ②具体选项
③举例说明 1、 显示/proc/meminfo文件中以大小s开头的行 2、显示/proc/meminfo文件中不以s开头的行 3、显示/proc/meminfo文件中大s开头的行数 4、显示/proc/meminfo文件中大s开头的行数并且在文件名上加上行数
华丽的分割线 二、元字符的列表以及它们在正则表达式上下文中的行为 (1)字符匹配和次数匹配。
定位出现的位置
三、元字符在正则表达式的具体应用 1、找出ifconfig命令结果中的0-255之间的数字。 ifconfig|grep -E "&;([0-9]|[1-9][0-9]|1[0-9][0-9]|25[0-5])&;" 2、找出/etc/passwd中的两位或三位数 cat /etc/passwd|grep "&;[0-9]{2,3}&;" 3、统计last命令中以root登录的每个主机IP地址登录次数 last|grep -o "^root&;.*[0-9].[0-9]{1,3}"|tr -s " "|cut -d" " -f3|uniq -c|sort -n 4、将此字符串:welcome to magedu linux 中的每个字符去重并排序,重复次数多的排到前面 echo 'welcome to magedu linux'|grep -o "."|sort|uniq -c|sort -nr 5、使用egrep取出/etc/rc.d/init.d/functions中其基名 echo /etc/rc.d/init.d/funtions|egrep -o "[^/]+/?$" 6、使用egrep取出上面路径的目录名 echo '/etc/rc.d/init.d/functions'|grep -Eo "^/.*/" 7、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行 cat /etc/rc.d/init.d/functions|grep -Eo "^[[:alnum:]_].*()" 8、显示ifconfig命令结果中所有IPv4地址 ifconfig|egrep -o "([0-9]{1,3}.){3}[0-9]{1,3}" 9、利用df和grep,取出磁盘各分区利用率,并从大到小排序 df |grep /dev/sd |grep -o "&;[0-9]{1,2}&;"|sort -nr 10、添加用户bash、testbash、basher、sh、nologin(其shell为/sbin/nologin),找出/etc/passwd用户名同shell名的行 cat /etc/passwd|grep -o "^(.*)&;.*&;1$" 11、显示CentOS7上所有系统用户的用户名和UID cat /etc/passwd |cut -d: -f1,3|grep "&;[0-9]{1,3}&;$" 12、找出“netstat -tan”命令的结果中以‘LISTEN’后跟任意多个空白字符结尾的行 netstat -tan|grep "LISTEN[[:space:]]+$" 13、显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行 cat /etc/grub2.cfg|grep "^[[:space:]]+[^[:space:]]" 14、找出/etc/passwd中的两位或三位数 cat /etc/passwd|grep "[0-9]{2,3}" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |