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