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 排除匹配行
练习
测试文件
- file
i love python lovelove python loooove I LOVE PYTHON I LOVE pYtHoN py.* 复制代码
- file1
love i love you a python looove yooou aa` 复制代码
- test/file
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 复制代码
注:
- 其他的可以自己去试试
- 正则表达式内容还是比较多的,如果没有学过可以去搜索一下,学起来很快。
- 什么是可拓展正则表达式也可以去搜索一下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。