文本三剑客——grep命令

grep命令(文本查询)

 

1.概述:

  • grep意为全面搜索正则表达式,是强大的文本搜索工具,并将其打印出来;
  • grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。注意:一当模式中包含了空格,务必要用双引号将其引起来;
  • linux系统支持三种形式的grep命令:
① grep,标准grep命令,支持基本和扩展的正则表达式;
② egrep,扩展grep命令,其实和grep -E等价,支持基本和扩展的正则表达式;
③ fgrep,快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配;
 

2.用法:

格式: grep [参数]
常用参数:
  • -c:只输出匹配行的数量
  • -l:只列出符合匹配的文件名,不列出具体的匹配行
  • -n:列出所有的匹配行,显示行号
  • -h:查询多文件时不显示文件名
  • --color=auto:对匹配到的文本着色显示
  • -v:显示不包含匹配文本的所有行
  • -v "^#"  filename:去掉注释行
  • -v "^$"  filename:去掉空行
[root@localhost ~]# grep -v "^#" filename | grep -v "^$"     #完整输出去掉空行及注释命令
  • -i:忽略大小写
  • -r:递归搜索
  • -o:仅显示匹配到的字符串,以字节为单位
  • -q:静默模式,不输出任何信息
  • -A N --after:后N行
  • -B N --before:前N行
  • -C N --context:前后各N行
  • -E:使用ERE(使用扩展正则表达式) 等同于egrep  
[root@localhost ~]# grep zwx file_* /etc/hosts     #支持多文件查询并支持使用通配符
file_1:zwx
file_1:zwx
file_1:zwxddkjflkdjfdlkfjlsdkj
file_2:zwx

[root@localhost ~]# grep -c zwx file_*     #输出匹配字符串行的数量
file_1:2
file_2:1
file_3:0

[root@localhost ~]# grep "^[Ss]" /proc/meminfo     #显示/proc/meminfo文件中以大小写s开头的行
[root@localhost ~]# grep -i "^s" /proc/meminfo     #忽略s的大小写

[root@localhost ~]# grep -v "/bin/bash$" /etc/passwd     #显示/etc/passwd文件中不以/bin/bash结尾的行

[root@localhost ~]# id root > /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7     #如果root用户存在,显示其默认的shell程序;位置锚定

[root@localhost ~]# grep "\<[[:digit:]]\{2,3\}\>" /etc/passwd     #找出/etc/passwd中的两位或三位数; 贪婪匹配:继续往后匹配  
[root@localhost ~]# grep "\<[0-9]\{2,3\}\>" /etc/passwd
[root@localhost ~]# grep -E "\<[0-9]{2,3}\>" /etc/passwd     #使用egrep,扩展正则表达式

[root@localhost ~]# grep "^[[:space:]]\+[^[:space:]]\+" /etc/grub2.cfg     #显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符行

[root@localhost ~]# netstat -tan | grep "LISTEN[[:space:]]*$"     #找出“netstat -tan"命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行

[root@localhost ~]# useradd bash && useradd testbash && useradd nologin -s /sbin/nologin     #添加用户bash、testbash以及nologin(其shell为/sbin/nologin),然后找出/etc/passwd文件中用户名同shell名的行
bash:x:1010:1013::/home/bash:/bin/bash
nologin:x:1012:1015::/home/nologin:/sbin/nologin
[root@localhost ~]# grep -E "^(\<[[:alnum:]]+\>).*\1$" /etc/passwd     #扩展正则表达式  
[root@localhost ~]# grep "^\(\<[[:alnum:]]\+\>\).*\1$" /etc/passwd     #基本正则表达式;\1:引用分组的内容;保证用户名和shell同名

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值