【linux shell】grep 常用选项

网友投稿 871 2022-10-04

【linux shell】grep 常用选项

【linux shell】grep 常用选项

color选项增加颜色渲染

使用拓展正则表达式

如果要使用正则表达式,需要添加-E选项——这意味着使用扩展(extended)正则表达式。或者也可以使用默认允许正则表达式的grep命令——egrep。例如:

$ grep -E "[a-z]+" filename #或者 $ egrep "[a-z]+"

仅输出匹配结果

使用 ​​-o​​

[root@CentOS ~]# grep word readmethis is the line containing word[root@CentOS ~]# grep word readme -o

翻转匹配

​​-v, --invert-match​​翻转匹配即是将不属于模式的内容输出

[root@CentOS ~]# grep -v word readme this is

输出匹配行或者匹配项个数

@CentOS ~]# cat readmethis is the line containing word, wordthis is a simple line.[root@CentOS ~]# grep -c word readme 1[root@CentOS ~]# grep -o word readme |wc -l2

输出匹配文件

​​-l​​

[root@CentOS ~]# grep -l word readme out.html

输出行号

​​-n​​

Perl正则表达式

​​-P​​

字节偏移

​​-b​​

-b, --byte-offset Print the 0-based byte offset within the input file before each line of output. If -o (--only-matching) is specified, print the offset of the

​​-o​​ 只输出匹配单词结果

[root@CentOS ~]# grep -b -o word readme 28:word34:word39:word[root@CentOS ~]# cat readmethis is the line containing word, wordwordthis is

递归搜索文件

​​-R​​

[edemon@CentOS tmp]$ grep "open" . -R ./write.c: int fd = open("./tmp.txt",O_WRONLY|O_CREAT|O_TRUNC,0644);./write.c: perror("tmp.txt open wrongly");

忽略大小写

​​-i​​

[edemon@CentOS tmp]$ echo "HAha" |grep -i "haha"HAha

多模式匹配

使用​​-e​​选项

[edemon@CentOS tmp]$ echo this is a line |grep -e "is" -e "line" -oisis

使用文件

[edemon@CentOS tmp]$ echo -e "is\nline" > pattern_txt[edemon@CentOS tmp]$ cat pattern_txt isline[edemon@CentOS tmp]$ echo this is a line |grep -f pattern_txt -oisis

搜索时包括文件或排除文件

​​include​​​ 或 ​​exclude​​

[edemon@CentOS tmp]$ grep "open" . -r --include *.c./write.c: int fd = open("./tmp.txt",O_WRONLY|O_CREAT|O_TRUNC,0644);./write.c: perror("tmp.txt open wrongly");[edemon@CentOS tmp]$ grep "open" . -r --exclude *.c

排除目录:​​--exclude-dir​​​ 从文件中读取所需排除的文件列表: ​​​--exclude-from FILE​​

静默输出

​​-q​​​选项可以使得grep不输出任何东西到stdout。即使出现出错。 当返回值是0时,则找到了对象。非0则没找到。

[edemon@CentOS workspace]$ cat auto.c |grep -q longjmp[edemon@CentOS workspace]$ echo $?0

匹配文本上下文输出

#输出4后面2行[edemon@CentOS workspace]$ seq 10 |grep 4 -A 2456#输出4前面2行[edemon@CentOS workspace]$ seq 10 |grep 4 -B 2234#输出4前后两行[edemon@CentOS workspace]$ seq 10 |grep 4 -C 223456

其他

edemon@linux:~$ cat tt“在这个世界上,分裂是最大的痛苦,堤坝的分裂会导致洪灾,地表的分裂会导致地震,山峦的分裂会带来山崩,爱情的分裂会带来离婚,同样你和自我的分裂会带来一生的痛苦和遗憾。人生最大的痛苦莫过于知道该怎么做却没有去做,你会自责,你会对自己不满意,你会觉得自己是渺小的、不讲信誉不可信的。总而言之,就是你开始不信任自己,自信心降低了。”真正能自控的人是内心和谐的人,他们将自己内心的每一部分需求都当作朋友来看待,这样每一部分都不会捣乱。这样的人不是试图控制或压制一些缺点,而总能从它们当中找到正面的信息。仔细地聆听一下你内心的声音,你会听见,你心中有一个部分在大喊:你整天做令人烦躁和劳累的工作,你太需要休息和娱乐了。现在,你要感谢这个“次人格”对你的关心和帮助,告诉它你一定会去。但此时此地,你必须先把手头的工作完成。这个时候,你会发现,那些曾经让你分心的想法不再纠缠你了,它相信了你的承诺。edemon@linux:~$ grep -n "分裂" tt    #tt中包含"分裂"的所有行1:“在这个世界上,分裂是最大的痛苦,堤坝的分裂会导致洪灾,地表的分裂会导致地震,山峦的分裂会带来山崩,爱情的分裂会带来离婚,同样你和自我的分裂会带来一生的痛苦和遗憾。人生最大的痛苦莫过于知道该怎么做却没有去做,你会自责,你会对自己不满意,你会觉得自己是渺小的、不讲信誉不可信的。总而言之,就是你开始不信任自己,自信心降低了。”edemon@linux:~$ grep -v "分裂" tt   #tt中不包含"分裂"的所有行真正能自控的人是内心和谐的人,他们将自己内心的每一部分需求都当作朋友来看待,这样每一部分都不会捣乱。这样的人不是试图控制或压制一些缺点,而总能从它们当中找到正面的信息。仔细地聆听一下你内心的声音,你会听见,你心中有一个部分在大喊:你整天做令人烦躁和劳累的工作,你太需要休息和娱乐了。现在,你要感谢这个“次人格”对你的关心和帮助,告诉它你一定会去。但此时此地,你必须先把手头的工作完成。这个时候,你会发现,那些曾经让你分心的想法不再纠缠你了,它相信了你的承诺。edemon@linux:~$ grep -c "分裂" tt   #输出行数1edemon@linux:~$ grep -l "分裂" *grep: c: Is a directorygrep: d: Is a directorygrep: Desktop: Is a directorygrep: Documents: Is a directorygrep: Downloads: Is a directorygrep: e: Is a directorygrep: f: Is a directorygrep: Music: Is a directorygrep: Pictures: Is a directorygrep: pra.link: Is a directorygrep: Public: Is a directorygrep: sda: Is a directorygrep: Templates: Is a directoryttgrep: Videos: Is a directoryedemon@linux:~$ grep -s "分裂" *   #和前者比较少了很多乱七八糟的出错信息tt:“在这个世界上,分裂是最大的痛苦,堤坝的分裂会导致洪灾,地表的分裂会导致地震,山峦的分裂会带来山崩,爱情的分裂会带来离婚,同样你和自我的分裂会带来一生的痛苦和遗憾。人生最大的痛苦莫过于知道该怎么做却没有去做,你会自责,你会对自己不满意,你会觉得自己是渺小的、不讲信誉不可信的。总而言之,就是你开始不信任自己,自信心降低了。edemon@linux:~$ grep -r doc *   #递归搜索当前目录下含关键词grep的文本内容grep 使用 -w 后相应的元字符变成普通字符,使用参数x匹配整行edemon@linux:~$ cat tt#!/bin/bashecho "the time is "dateecho here is :whoechoedemon@linux:~$ grep -w echo ttecho "the time is "echo here is :echoedemon@linux:~$ grep -x echo ttechoecho $? 用于输出上一条命令的退出状态(返回码)0表示成功执行,1表示未得到结果,2表示产生语法错误edemon@linux:~$ echo $?0edemon@linux:~$ grep -x echo tttgrep: ttt: No such file or directoryedemon@linux:~$ echo $?2edemon@linux:~$ cat ttababcvabedemon@linux:~$ grep -b -w ab tt  #打印匹配行距离首部的偏移量0:ab3:ab9:ab    #解释,每一个串计上'\0'edemon@linux:~$ cat ttab ab cv abedemon@linux:~$ grep -b -o -w ab tt #匹配词的偏移量0:ab3:ab9:abedemon@linux:~$ grep -b -w ab tt0:ab ab cv ab查找tt文件中的空白行和非空白行edemon@linux:~$ grep ^$ ttedemon@linux:~$ grep ^[^$] tt精确匹配:edemon@linux:~$ grep "\" ttabedemon@linux:~$ grep -w ab ttabgrep 命令族:grep 标准,支持基本正则表达式egrep (grep -E) 拓展,支持拓展正则表达式fgrep (grep -F) 快速,不支持正则表达式不区分大小写的查找:edemon@linux:~$ grep .*[aA].* tt   #查找含a或者A的文本34.eAasa行尾判断:edemon@linux:~$ grep -E [^A-Za-z]$ tt:213edemon@linux:~$ grep -E :$ tt:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【github travelSystem】高德JS API 多边形搜索
下一篇:mpvue中sass全局变量的配置方法(代码)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~