在使用grep命令时,为什么显示的是用另一颜色标注了我的目标字符,但是全部文本内容都显示了出来,完全达不到想要的筛选效果呀?
gerp就是会选出包含目标字符的一行数据
1、grep [-acinv] [--color=auto] '搜寻字符串' filename.txt
选项与参数:
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-q : 静默模式,没有任何输出,得用$?(echo $?)来判断执行成功没有,即有没有过滤到想要的内容
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc
-A n : 如果匹配成功,则将匹配行及其后n行一起打印出来
-B n : 如果匹配成功,则将匹配行及其前n行一起打印出来
-C n :如果匹配成功,则将匹配行及其(前后)n行一起打印出来
-E :等同于egrep,支持扩展的正则表达式;
-F :--fixed-strings:支持使用固定字符串,不支持正则表达式,相当于fgrep;
-G :--basic-regexp:支持使用基本正则表达式;
-P :--perl-regexp:支持使用pcre正则表达式;
-o : 只显示匹配的内容
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数,注意如果同时使用-cv选项是显示有多少行没有被匹配到
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
-R :搜索子目录
--color=auto :可以将找到的关键词部分加上颜色
例如:
文件的内容
1-bbb
2:aaa112
3:aaa33
4-ccc44
5-ccc
cat filename.txt | grep -n -A2 -B1 --color=auto 'aaa'
[root@localhost]# cat filename.txt | grep -n -A2 -B1 --color=auto 'aaa'
1-1-bbb
2:2:aaa
3:3:aaa
4-4-ccc
5-5-ccc
[root@localhost]# cat filename.txt | grep --color=auto 'aaa'
2:aaa112
3:aaa33
??你上一下截图看看啊??
grep 在xshell的话,就是标红你检索匹配的字符的。
字其余终端,会根据不同的颜色方案设置有所不同。
可以试一下这个命令
cat 文件名.txt | grep --color=auto 'aaa'(筛选条件)