linux 正则、通配符

grep [options] regex [file...]

选项

描述

-i

忽略大小写。不会区分大小写字符。也可用--ignore-case 来指定。

-v

不匹配。通常,grep 程序会打印包含匹配项的文本行。这个选项导致 grep 程序只会打印不包含匹配项的文本行。也可用--invert-match 来指定。

-c

打印匹配的数量(或者是不匹配的数目,若指定了-v 选项),而不是文本行本身。 也可用--count 选项来指定。

-l

打印包含匹配项的文件名,而不是文本行本身,也可用--files-with-matches 选项来指定。

-L

相似于-l 选项,但是只是打印不包含匹配项的文件名。也可用--files-without-match 来指定。

-n

在每个匹配行之前打印出其位于文件中的相应行号。也可用--line-number 选项来指定。

-h

应用于多文件搜索,不输出文件名。也可用--no-filename 选项来指定。

grep bzip a*.txt    在a开头的txt文件里搜索bzip

grep -h '[-AZ]' dirlist*.txt    连字符-放在开头  表示其本身

-A3 显示后面3行     -B2 显示前面两行

 

[:lower:] 是 a-z      [[:lower:]]就是[a-z]

grep -e a -e b abc.txt   匹配a或者e

+ ? | () 等需要使用grep -E  或者 egrep,   grep不支持

 

 

 

 

通配符不止下面这几种

通配符

意义

*

匹配任意多个字符(包括零个或一个)

?

匹配任意一个字符(不包括零个)

[characters]

匹配任意一个属于字符集中的字符

[!characters]

匹配任意一个不是字符集中的字符   ^  ?

[[:class:]]

匹配任意一个属于指定字符类中的字符

 

字符类

意义

[:alnum:]

匹配任意一个字母或数字

[:alpha:]

匹配任意一个字母

[:digit:]

匹配任意一个数字

[:lower:]

匹配任意一个小写字母

[:upper:]

匹配任意一个大写字母

 

示例

模式

匹配对象

*

所有文件

g*

文件名以“g”开头的文件

b*.txt

"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件

Data???

“Data”开头,其后紧接着3个字符的文件

[abc]*

文件名以"a","b","c"开头的文件

BACKUP.[0-9][0-9][0-9]

"BACKUP."开头,并紧接着3个数字的文件

[[:upper:]]*

以大写字母开头的文件

[![:digit:]]*

不以数字开头的文件

*[[:lower:]123]

文件名以小写字母结尾,或以 “1”“2”,或 “3” 结尾的文件

posted @ 2020-05-26 18:58  是的哟  阅读(253)  评论(0编辑  收藏  举报