grep命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep命令相关的知识,希望对你有一定的参考价值。
1.grep命令grep命令的名称是来自于全局搜索正则表达式并打印文本行(Global Search Regular Expression and Print out the line)的缩写。
语法如下
grep [options] pattern [file…]
options:表示选项。
pattern:要匹配的模式。
file:表示一系列的文件名。
1.1 选项
-i:忽略大小写
-q:结果不显示。
-c:接数字,列出该文件的第几行。 grep -c ftp.so /usr/local/webserver/php-5.2.4/lib/php.ini
-v:反向选择。找出没有关键字的那一行。
-h:当搜索多个文件的时候,不显示文件的前缀。
-l:只列出含有匹配文件行的文件名,不显示具体内容。
-n:显示行号和所有文本行。
-s:不显示错误信息。
-w:匹配整个单词
-x:匹配整个文本行。
-r:递归搜索,不仅搜索当前目录,还会搜索各级子目录。
-b:打印匹配文本行到文件头的偏移量,以字节为单位。
-A:后面跟数字,过滤出符合要求的行以及下面n行。
-B:后面跟数字,过滤出符合要求的行以及上面n行。
-C:后面跟数字,过滤出符合要求的行以及上和下面n行。
-E:支持扩展正则表达式。同egrep
-P:支持Perl正则表达式。
-F:不支持正则表达式,以字面意思匹配。
--color=aoto:关键字加上颜色显示。
2. grep字符集
同正则:元字符 正则的特殊符号
egrep grep -E字符集
3. 范例
3.1 选取
将last有出现root的行取出来。
last |grep 'root'
将last没有出现root的行取出来。
last |grep -v 'root'
将last有出现root的行取出来,只显示第一列。
last |grep 'root' |cut -d ' ' -f 1
3.2查找关键字
找出filename文件中 含有abc的行。
grep 'abc' filename
承上,显示行好,和颜色。
grep -n --color=auto 'abc' filename
承上,把关键字所在行前三行,后两行打印出来。
grep -n --color=auto -A2 -B3 filename
找出不含有abc关键字的行。
grep -vn 'abc' filename
忽略大小写,找出包行abc的行
grep -in 'abc' filename
3.3 利用 [] 来查找关键字
找出 abc aecd的行。
grep -n 'a[be]c' filename
找到不是 bc前面不是a的行。
grep -n [^a]bc' filename
找到bc前面不是小写字符的行。
grep -n [^a-z]bc' filename
找到含有数字的行。
grep -n '[0-9]' filename
grep -n [[:digit:]] filename
3.4 开头与结尾符号^$
找到以a开头的行。
grep -n '^a' filename
找到以小写字母开头的行。
grep '-n ^[a-z]' filename
找到不是以字母开头的行,
grep -n '^[^a-zA-Z]' filename
找到以 . 结尾的行。
grep -n '\.$' filename
. 有特殊含义必须转义成普通字符。
找出空白行。
grep -n '^$' filename
不显示空白行和#开头的行
grep -vn '^$' filename | grep -vn '^#'
3.5 任意一个字符 . 重复字符*
找出g??d的字符串。
grep -n 'g..d' filename
找出至少oo的字符串。
grep -n 'ooo*' filename
*表示0个或多个*前面一个字符。
找出o与o之间任意个任意字符的字符串。
grep -n 'o.*' filename
3.6 使用限定连续RE字符范围{}
找出连续两个o的行。
grep -n 'o\{2\}' filename
找出g后面2-5个o,再接个g的字符串。
grep -n 'go\{2,5\}g' filename
找出2个或以上的o的字符串。
grep -n 'o\{2,\}' filename
以上是关于grep命令的主要内容,如果未能解决你的问题,请参考以下文章