有关 ECMAScript 2020 新特性的全面解析
871
2022-10-04
【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 "\
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~