grep
grep是“global search regular expression and print out the line”的简称,意思是全面搜索正则表达式,并将其打印出来
这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令之一
grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。
注意:一当模式中包含了空格,务必要用双引号将其引起来
grep
- 作用
- 按条件过滤文件内容
- 使用格式
- grep [option] "PATTERN" 文件名称
- PATTERN 模式
- 条件
- 由普通字符、正则表达式组成的条件
- PATTERN 模式
- grep [option] "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



