linux grep

grep擅长查找功能:grep [OPTIONS] PATTERN [FILE...]

常见应用:

1、内容检索

获取行 grep pattern file
获取内容 grep -o pattern file
获取上下文  grep -A -B -C pattern file (前,后,中间)

样例:
grep -no "[0-9]*0$" list.txt  匹配尾号未0的数字,仅输出对应数字
grep -A1 "2," list.txt   

2、文件检索

递归搜索  grep pattern -r dir/ 
展示匹配文件名 grep -H -r 111 /tmp/1
只展示匹配文件名 grep -l -r 111 /tmp/1 
eg:
grep -r code ljm/ 递归检索内容,打印文件和文件名grep -H 111 /tmp/1
grep -l -r code ljm/ 打印匹配的文件名
grep -L -r code ljm/ 打印不匹配的文件名
grep -H -r code ljm/ 打印匹配的内容,包括文件名
grep -h -r code ljm/ 打印匹配的内容,不包括文件名

3、范围约束:

忽略大小写 grep -i pattern file

不显示匹配的行  grep -v pattern file

使用扩展正则表达式  grep -E pattern file   ?? 待深入

文件范围和目录范围约束  grep 111 -r /tmp/demo/ --include "11*"

eg:
grep
-E 'a|b' list.txt 匹配包含a、b的内容

 

 

4、进程检索

进程过滤场景比较特殊,需要注意
grep 本身会开启新进程,所以需要单独过滤掉grep 进程
例子:ps -ef | grep ssh | grep -v grep  找到带有ssh进程的参数

 

附件:

常用正则:

表达式 意义 例子
^ 匹配开头 grep ^a list.txt
$ 匹配结尾 grep a$ list.txt
[] 匹配区间

grep [a-z] list.txt 匹配所有小写字母

grep [0-9] list.txt 匹配所有数字

grep [ab] list.txt 匹配包含a、b

[^] 不匹配区间 grep [^ab] list.txt 匹配不包含a、b
* 0个或多个  
. 任意字符  
? 非贪婪匹配,匹配0个或1个  
{n} 重复n次  
{n,} 重复n次或更多次  
{n,m} 重复n到m次  

 grep 常用命令:

命令 意义 样例
-i 忽略大小写 grep -i ab list.txt
-v 不显示匹配行 grep -v ab list.txt

-n

同时输出行号 grep -n ab list.txt
-o 只把每个匹配的内容独立显示 grep -o ab list.txt
-A{num} 同时打印文本结尾后num行 grep -A2 ab list.txt
-B{num} 同时打印文本前面num行 grep -B2 ab list.txt
-C{num} 同时打印文本前后num行 grep -C2 ab list.txt
-r dir/ 递归搜索目录  
-m{num} 匹配匹配中的第num个 grep -m2 ab list.txt
posted @ 2021-11-11 20:34  keep2021  阅读(66)  评论(0编辑  收藏  举报