前阵子稍微复习了一下基本的linux命令,这次单独学习一下grep命令,这边算作一个学习笔记。
grep命令
Linux grep命令用于查找文件里符合条件的字符串。
1.在指定文本中寻找符合条件的文本行 grep
以在catalina.out文件中查找保存为例:
grep ‘match_pattern’ file_name
grep 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out
仅会包含指定信息的文本行
grep.png
2.输出文本行和行数 grep -n
grep -n ‘match_pattern’ file_name
grep -n 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out
会在文本行前面加上行数
grep -n.png
3.输出文本行行数 grep -c
grep -c ‘match_pattern’ file_name
grep -c 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out
仅输出文本行行数的和
grep -c.png
4.输出文本行及其上下相关文本 grep -A -B -C
grep -A 5 ‘match_pattern’ file_name ---之后5行
grep -A 5 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out
grep -B 5 ‘match_pattern’ file_name ---之前5行
grep -B 5 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out
grep -C 5 ‘match_pattern’ file_name ---前5行后5行
grep -C 5 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out
后5行
grep -A.png
前5行
grep -B.png
前5行后5行
grep -C
5.标记匹配的文本行 grep --color=auto
grep -n -C 5 ‘match_pattern’ file_name --color=auto ---前5行后5行并标记符合条件的文本
grep -n -C 5 'Method "saveData" failed for object com.fh.iasp.app.cm.client.v2.action' catalina.out --color=auto
如图可以看书match_pattern 部分被标记了颜色
color=auto.png
6.以递归的方式查找符合条件的文件 grep -r
grep -r 'match_pattern' path ---path为空则默认当前目录
grep -r 'aaa'
查找当前文件夹及子文件夹下所有符合条件的文本及文本行
grep -r.png
7.忽略大小写 grep -i
grep -r 'aaa' -i
如图,对比一下结果就很清晰
grep -i.png
8.包含或排除指定文件 grep --include --exclude
--include file 仅在指定文件中查找,后面可接多个文件
--exclude file 排除指定文件
grep 'aaa' . -r --include *.md --include *.txt ----尽在以md和txt结尾的文件中查找
grep 'aaa' . -r --exclude *.md ----在非md结尾的文件中查找
include-exclude.png
9.匹配多个文本 grep -e / -E
grep -e 'match_pattern1' -e 'match_pattern2' file ---满足任一条件
grep -E 'match_pattern11|match_pattern2' file
grep -e 'aa' -e 'dd' . -r --exclude *.md
满足任一条件就会显示
会显示包含 aa 或者 dd 的非md文件
grep -e.png
grep -E.png
可以看出,两个命令出来的结果是一样的
9.1如果要同时满足多个条件怎么搞?
解决方案:多用几个grep
grep 'aa' . -r --exclude *.md |grep 'dd'
image.png
10.排除指定文本 grep -v
grep -v ‘match_pattern’ file_name
grep -v -n 'aa' 111.txt
会显示不包含aa的所有文本行
grep -v.png
10.1如果要同时排除多个条件怎么搞?
解决方案:
grep -v -n 'aa\|d\|c' 111.txt
会排除aa d c的文本行
image.png
网友评论