用法
grep [选项]... PATTERN [FILE]...
command | grep [选项]... PATTERN
复制代码
- 在每一个 FILE 或是标准输入中查找 PATTERN。
- 默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
- 例如: 在menu.h 和 main.c 文件中查找Hello world关键字所在的行
grep -i 'hello world' menu.h main.c
复制代码
经常使用选项:
- -E PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
- -i 忽略大小写
- -n 显示行号
- -F 使用字符串匹配,不去使用字符串中的正则表达式的含义。
- -x 强制 PATTERN 仅彻底匹配一行,连空格都不行
- -r 递归搜索当前目录以及子目录下的文件中的匹配行
- -c 统计count,输出行的数量
- -w 匹配单词,先后有空格。
- -l 列出匹配文件的文件名,不显示匹配内容 (适用于多文件查找和递归查找)
- -h 列出匹配项,不显示文件名 (适用于多文件查找和递归查找)
- -v 排除匹配行
练习
测试文件
i love python
lovelove python
loooove
I LOVE PYTHON
I LOVE pYtHoN
py.*
复制代码
love
i love you
a python
looove yooou
aa`
复制代码
i love python
PytHon is aa
lovelove
i love python
复制代码
忽略大小写匹配
grep -i python file
复制代码
i love python
lovelove python
I LOVE PYTHON
I LOVE pYtHoN
复制代码
忽略大小写匹配并显示行号
grep -in python file
复制代码
1:i love python
2:lovelove python
4:I LOVE PYTHON
5:I LOVE pYtHoN
复制代码
使用可拓展的正则表达式
grep -E "py|PY" file
复制代码
i love python
lovelove python
I LOVE PYTHON
py.*
复制代码
grep -E "py|PY" file file1
复制代码
file:i love python
file:lovelove python
file:I LOVE PYTHON
file:py.*
file1:a python
复制代码
递归查找并使用可拓展正则表达式
grep -rE "py|PY"
复制代码
file:i love python
file:lovelove python
file:I LOVE PYTHON
file:py.*
file1:a python
test/file:i love python
test/file:i love python
复制代码
不使用正则匹配用字符串表面意思匹配
grep -rF py.*
复制代码
file:py.*
复制代码
使用管道符,组合使用
# 查询/etc/passwd 中 有bash的行
cat /etc/passwd | grep "bash"
复制代码
root:x:0:0:root:/root:/bin/bash
复制代码
多个管道符使用
# 查询nginx进程 去除命令自己的grep进程
ps -ef | grep nginx | grep -v grep
复制代码
root 4458 1 0 6月10 ? 00:00:00 nginx: master process /usr/sbin/nginx
nginx 4459 4458 0 6月10 ? 00:00:25 nginx: worker process
复制代码
注:
- 其余的能够本身去试试
- 正则表达式内容仍是比较多的,若是没有学过能够去搜索一下,学起来很快。
- 什么是可拓展正则表达式也能够去搜索一下