设为首页 收藏本站
查看: 1678|回复: 0

[经验分享] Linux下grep入门

[复制链接]

尚未签到

发表于 2018-5-17 10:42:13 | 显示全部楼层 |阅读模式
Linux下入门grep用法
1.grep简述及特点

  •   简介:全局搜索正则表达式出来的行并打印 (Global search REgular expression and Print out the line),一种按照特定模式(pattern)的文本过滤工具
  •   模式:pattern,通过有正则表达式(refexp)特殊字符以及文本字符组成的条件来过滤
  •   正则表达式:refexp,有一些bash支持的特殊文本字符来表示特殊含义,如果特殊字符当原本字符匹配需要转义
2.正则表达式分类

  •   基本正则表达式: BRE
  •   扩展正则表达式: ERE
3.grep 命令基础语法
grep [option] [refexp] file
–color 用特定的颜色高亮显示模式中匹配的字符串,一般为红色
-v显示不被模式PATTERN匹配的行-o表示只显示被模式匹配的字符,而不是整个行-q静默模式不输出信息-A# after 显示到匹配到的后 # 行-B# before 显示到匹配的前 # 行-C# context 显示匹配的前后各几行-E使用扩展正则表达式基本和扩展的功能类似,只是转义方式不同4.基本正则表达式
1.字符匹配
字符字符说明.任意单个字符?匹配其前单个字符0或1次*匹配其前单个字符任意次.*匹配任意长度的任意字符[]表示匹配[]里的字符集,[ab]及包含a或b的字符[^]表示匹配除了[]里的其它任意字符,[^ab]及不包含a或b的字符2.[]里所支持的特殊通配符:
字符说明[0-9]表示单个0到9的数字[:digit:]表示所有数值,同上[a-z] [:lower:]表示单个小写字母[A-Z] [:upper:]表示单个大写字母[:alpha:] [a-zA-Z]表示单个字母[:alnum:]表示字母或数字[:space:]匹配空格[:punct:]表示所有标点符合注意:在使用中,[::]这种格式[::]里带特殊单词的需要再加[]来表示,比如匹配空格则为'[[:space:]]'3.次数匹配
字符说明\?0次或1次\+匹配其前字符一次以上\{m\}匹配其前字符m次\{m,\}匹配其前字符至少m次\{m,n\}匹配其前字符至少m次,至多n次4.字符锚定
字符说明^行首锚定$行尾锚定^$表示空行匹配\< 或 \b行首锚定\> 或 \b行尾锚定\\>锚定匹配PATTERN的作为单词 \ \broot\b\>\(\) :对()里匹配PATTERN的做分组\1为后项引用前面第一个分组扩展正则
1.用法

  •   grep -E 'PATTERN' [file]
  •   egrep 'PATTERN' [file]
  •   字符匹配和基本相同
  •   锚定和基本用法一样
  •   分组直接使用(),不要用\转义
  •   后项引用 \1 \2 \3
2.次数匹配
字符说明*匹配前面字符任意次?0或1次。>=0+1次以上。>=1{m}匹配多少次{m,}至少m次{m,n}至少m次,至多n次{0,n}至多n次示例
1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)
grep -i '^s' /proc/meminfo
grep  '^[Ss]' /proc/meminfo
grep  -E  '^(s|S)' /proc/meminfo2、显示/etc/passwd文件中不以/bin/bash结尾的行
grep  -v  '/bin/bash$'  /etc/passwd3、显示用户rpc默认的shell程序
grep  '^\<rpc\>'  /etc/passwd | cut -d: -f74、找出/etc/passwd中的两位或三位数
grep  '\<[0-9][0-9]\?\>'  /etc/passwd
grep  '\<[0-9]\{2,3\}\>'  /etc/passwd5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行
grep  '^[[:space:]]\+.*[^[:space:]]'  /etc/grub2.cfg6、找出"netstat -tan"命令的结果中以'LISTEN'后跟任意个空白字符结尾的行
netstat  -tan  '.*LISTEN[[:space:]]*$'7、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行
grep  '^\<\(.*\)\>.*/\1$'  /etc/passwd
grep  '^\<\(.*\)\>.*\<\1\>$' /etc/passwd8、显示当前系统root、mage或wang用户的UID和默认shell
grep -E '^(root|mage|wang)\>' /etc/passwd |cut -d: -f79、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行
grep -E -o '^\<[[:alnum:]_]+\>\(\)' /etc/rc.d/init.d/functins10、使用egrep取出/etc/rc.d/init.d/functions中其基名
echo "/etc/rc.d/init.d/functions" grep -E -o '[^/]+/?$'11、使用egrep取出上面路径的目录名
echo "/etc/rc.d/init.d/functions" | grep -E '/.*/'12、统计以root身份登录的每个远程主机IP地址的登录次数
last | grep -o 'root\>.*\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]' | tr -s ' '| cut -d' ' -f3 | uniq -c13、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255
grep  -E  '\<([0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>'14、显示ifconfig命令结果中所有IPv4地址
ifconfig | grep -o '\(\([0-9]\|1[0-9]\|1[0-9]{2}\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\([0-9]\|1[0-9]\|1[0-9]{2}\|2[0-4][0-9]\|25[0-5]\)'  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461260-1-1.html 上篇帖子: Linux中UMASK 下篇帖子: linux新建分区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表