grep

grep是“global search regular expression and print out the line”的简称,意思是全面搜索正则表达式,并将其打印出来

这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令之一

grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。

注意:一当模式中包含了空格,务必要用双引号将其引起来

grep

  • 作用
  • 按条件过滤文件内容
  • 使用格式
  • grep [option] "PATTERN" 文件名称
  • PATTERN 模式
  • 条件
  • 由普通字符、正则表达式组成的条件

参考实例

1、grep基本使用

[root@hosta ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

 

  • grep命令的默认行为,某一行中带有符合条件的内容,整行都会显示

1)支持多文件查询并支持使用通配符

[root@hosta ~]# grep a /opt/file* /etc/hosts
/opt/file01:ssadasdasdasdasdasdxxxxx
/opt/file01:sdsssssqwertyuiopasdfghjklzxcvbnms
/opt/file3:sdasdasdasxqweqweqwwerweioturywrtyuirnmcvbxcnmvcx,mwhwjwjwwj
/etc/hosts:127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
/etc/hosts:::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

 

常用参数:

-i

搜索时,忽略大小写

-c

只输出匹配行的数量

-l

只列出符合匹配的文件名,不列出具体的匹配行

-n

列出所有的匹配行,显示行号

-h

查询多文件时不显示文件名

-s

不显示不存在、没有匹配文本的错误信息

-v

显示不包含匹配文本的所有行

-w

匹配整词

-x

匹配整行

-r

递归搜索

-q

禁止输出任何结果,已退出状态表示搜索是否成功

-b

打印匹配行距文件头部的偏移量,以字节为单位

-o

与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

2)输出匹配字符串 行的数量:

[root@hosta ~]# grep -c wj /opt/file*
/opt/file1:1
/opt/file10:0
/opt/file2:1

 

3)列出所有的匹配行,并显示行号:

[root@hosta ~]# grep -n wj /opt/file*
/opt/file1:1:wjwjwjwjwjwjwjw
/opt/file2:2:sdwj
/opt/file3:3:hwjwjwwj
/opt/file3:4:wjwjwj

 

4)显示不包含模式的所有行:

[root@hosta ~]# grep -vc wj /opt/file*
/opt/file1:0
/opt/file10:0
/opt/file2:2
/opt/file3:2

 

5)不再显示文件名:

[root@hosta ~]# grep -h wj /opt/file*
wjwjwjwjwjwjwjw
sdwj
hwjwjwwj
wjwjwj

6)只列出符合匹配的文件名,不列出具体匹配的行:

[root@hosta ~]# grep -l wj /opt/file*
/opt/file1
/opt/file2
/opt/file3

7)不显示不存在或无匹配的文本信息:

[root@hosta ~]# grep -s wj /opt/file1 file_1
/opt/file1:wjwjwjwjwjwjwjw
[root@hosta ~]# grep  wj /opt/file1 file_1
/opt/file1:wjwjwjwjwjwjwjw
grep: file_1: 没有那个文件或目录

 

8)匹配整词,以字面意思去解释他,相当于精确匹配:

[root@hosta ~]# grep w* /opt/file1
wjwjwjwjwjwjwjw

9) 查找一个文件中的空行和非空行:

[root@hosta ~]# grep -c ^$ /opt/file2
1
[root@hosta ~]# grep -c [^$] /opt/file2
2

 

10) 匹配任意或重复字符用“.”或“*”符号来实现:

[root@hosta ~]# grep w.j /opt/file3
hwjwjwwj
[root@hosta ~]# grep w* /opt/file2
qwertyuikoodsfghjkpxcvbsadsad
sdwj