一、linux grep命令详解 | 您所在的位置:网站首页 › 查nginx进程命令 › 一、linux grep命令详解 |
目录 1. grep【擅长在文件中匹配文本】 1.1 命令参数 1.1.1 用法举例 1.2 grep搭配管道使用 1.2.1 grep和cat搭配管道 1.2.2 grep和ps搭配管道 1.3 扩展 1.3.1 常见的正则表达式 1.3.2 用于egrep 和 grep -e 的元字符扩展集 1. grep【擅长在文件中匹配文本】grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配的标红) 语法:grep [options] pattern [file...]简介:常用来做全局数据的查询定位(最擅长文本过滤) 1.1 命令参数 -A:显示匹配行及后面n行内容-B:显示匹配行及前面n行内容-C:显示匹配行及前后n行内容-E:扩展的正则表达式,相当于egrep(可以识别特殊正则符号)-l:列出匹配文件内容的文件名-L:列出不匹配文件内容的文件名-e:实现多个选项间的逻辑or关系,或者使用egrepegrep '^root|bash$' passwd grep -e '^abc' -e 'b$' oldboy.txt -i:字符忽略大小写-c:统计匹配成功的行数-n:显示匹配的行号-r:进行递归查找子目录中的文件-v:显示不被pattern匹配到的行,相当于[^]反向匹配(进行匹配信息取反过滤操作)grep -v '^$':过滤空白行(^$ 表示从首到尾;-v取反,即该命令作用:过滤空白行/符) -o:只显示匹配到的字符串-q:静默模式,不输出任何信息-s:不显示错误信息-w:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)--color:匹配到的关键词会高亮显示grep xxx ---color=auto --- 查询关键字高亮显示 \< 和 \>分别标注单词的开始与结尾(类似模糊查询)grep man /oldboy/oldboy.txt ---会匹配man、manic、batman grep '\' /oldboy/oldboy.txt --- 会匹配batman grep '\' /oldboy/oldboy.txt --- 只会匹配man 1.1.1 用法举例前期准备: [root@hero ~]# cat /oldboy/oldboy.txt 01 oldboy 02 oldgirl 03 oldbaby 04 man 05 manical 06 batman 1. 命令参数之【-A:显示匹配行及后面n行内容】 [root@hero ~]# grep -A 2 'oldbaby' /oldboy/oldboy.txt 03 oldbaby 04 man 05 manical 2. 命令参数之【-B:显示匹配行及前面n行内容】 [root@hero ~]# grep -B 2 'manical' /oldboy/oldboy.txt 03 oldbaby 04 man05 manical 3. 命令参数之【-C:显示匹配行及前后n行内容】 [root@hero ~]# grep -C 2 'oldbaby' /oldboy/oldboy.txt 01 oldboy 02 oldgirl03 oldbaby 04 man 05 manical 4. 命令参数之【-E:扩展的正则表达式,相当于egrep(可以识别特殊正则符号)】 [root@hero ~]# grep -E 'old.*' /oldboy/oldboy.txt 01 oldboy 02 oldgirl 03 oldbaby 5. 命令参数之【-l:列出匹配文件内容的文件名】 [root@hero ~]# grep -l 'oldboy' /oldboy/*/oldboy/oldboy.txt 6. 命令参数之【-L:列出不匹配文件内容的文件名】 [root@hero ~]# grep -L 'oldboy' /oldboy/*/oldboy/oldbaby.txt /oldboy/oldgirl.txt 7. 命令参数之【-e:实现多个选项间的逻辑or关系,或者使用egrep】 [root@hero ~]# grep -e 'oldboy' -e 'manical' /oldboy/oldboy.txt 01 oldboy 05 manical #使用egrep命令: [root@hero ~]# egrep 'oldboy|manical' /oldboy/oldboy.txt 01 oldboy05 manical 8. 命令参数之【-i:字符忽略大小写】 [root@hero ~]# grep -i 'OLDBOY' /oldboy/oldboy.txt 01 oldboy 9. 命令参数之【-c:统计匹配成功的行数】 [root@hero ~]# grep -c 'man' /oldboy/oldboy.txt 3 10. 命令参数之【-n:显示匹配的行号】 [root@hero ~]# grep -n 'man' /oldboy/oldboy.txt4:04 man5:05 manical6:06 batman 11. 命令参数之【-r:进行递归查找子目录中的文件】 [root@hero ~]# grep -r 'ma' /oldboy//oldboy/oldboy.txt:04 man/oldboy/oldboy.txt:05 manical/oldboy/oldboy.txt:06 batman/oldboy/oldgirl.txt:math 12. 命令参数之【-v:显示不被pattern匹配到的行,相当于[^]反向匹配(进行匹配信息取反过滤操作)】 [root@hero ~]# grep -v 'ma' /oldboy/oldboy.txt 01 oldboy 02 oldgirl 03 oldbaby 13. 命令参数之【-o:只显示匹配到的字符串】 [root@hero ~]# grep -o 'cal' /oldboy/oldboy.txt cal 14. 命令参数之【-q:静默模式,不输出任何信息】 [root@hero ~]# grep -q 'man' /oldboy/oldboy.txt 15. 命令参数之【-s:不显示错误信息】 [root@hero ~]# grep 'man' /oldboy/oldboy grep: /oldboy/oldboy: 没有那个文件或目录 [root@hero ~]#grep -s 'man' /oldboy/oldboy 16. 命令参数之【-w:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’)】 [root@hero ~]# grep -w 'man' /oldboy/oldboy.txt 04 man 17. 命令参数之【\< :匹配单词的开头】 [root@hero ~]# grep '\' /oldboy/oldboy.txt 04 man 06 batman 19. 同时使用\ [root@hero ~]# grep '\' /oldboy/oldboy.txt 04 man 1.2 grep搭配管道使用 1.2.1 grep和cat搭配管道[root@hero ~]# cat /oldboy/oldboy.txt |grep oldboy 01 oldboy 1.2.2 grep和ps搭配管道[root@hero ~]# ps -ef|grep ssh|grep -v grep --- 过滤ssh进程信息,并去除最后一行的grep信息 root 7384 1 0 16:18 ? 00:00:00 /usr/sbin/sshd -D root 7883 7384 0 16:18 ? 00:00:01 sshd: root@pts/0 1.3 扩展 1.3.1 常见的正则表达式 常见的正则表达式 ^锚定行的开始 如:'^grep'匹配所有以grep开头的行。$锚定行的结束 如:'grep$'匹配所有以grep结尾的行。.匹配一个非换行符的字符如:'gr.p'匹配gr后接一个任意字符,然后是p。*匹配零个或多个先前字符如:'*grep'匹配所有一个或多个空格后紧跟grep的行[]匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。[^]匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。\锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。\w匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。\W \w的反置形式,匹配一个或多个非单词字符,如点号句号等。\b匹配一个单词的边界。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”;“\b1_”可以匹配“1_23”中的“1_”,但不能匹配“21_3”中的“1_”。\B匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。 1.3.2 用于egrep 和 grep -e 的元字符扩展集 用于egrep 和 grep -e的元字符扩展集 +匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{0,1}。|将两个匹配条件进行逻辑“或”(Or)运算。例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her"()分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。{n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。{n,m}m和n均为非负整数,其中n |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |