Linux grep命令

来源:互联网 发布:cms哪个好 编辑:程序博客网 时间:2024/06/05 12:05

1 作用

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2 格式

grep [options] PATTERN [FILE...]

[1]grep 搜索字符串 [filename]

[2]grep 正则表达式 [filename]

在文件中搜索所有PATTERN出现的位置,PATTERN既可以是要搜索的字符串,也可以是一个正则表达式。

注意:在输入要搜索的字符串时最好使用双引号;而在模式匹配使用正则表达式时使用单引号。

2.1 options选项参数

-a 不要忽略二进制数据。

-A <显示>除了显示符合范本样式的那一行之外,并显示该行之后指定个数

-B <显示行数>除了显示符合范本样式的那一行之外,并显示该行之前指定个数的行

-C <显示> 除了显示符合范本样式的那一之外,并显示前后指定的

-c 输出匹配行的行数。

-d <进行动作>当指定要查找的是目录而非文件时,必须使用这项参数

-e <范本样式> 指定字符串作为查找文件内容的范本样式。

-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。

-f <范本文件>指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。

-F 将范本样式视为固定字符串的列表。

-G 将范本样式视为普通的表示法来使用。

-h 查询多文件时不显示文件名

-H 查询多文件时显示文件名。

-i  忽略字符大小写的差别。

-I  不区分大小写

-l  查询多文件时只列出匹配的文件名。

-L 查询多文件时列出不匹配的文件名

-n 显示匹配行及行号

-q 不显示任何信息。

-r 此参数的效果和指定“-d recurse”参数相同。

-s 不显示不存在或无匹配文本的错误信息。

-v 显示不包含匹配文本的所有行。

-w 只显示全字符合的即匹配整个单词 

-x 只显示全列符合的

-y 此参数效果跟“-i”相同。

-o 只输出文件中匹配到的部分

--color=auto 标记匹配颜色

 

2.2 pattern模式:正则表达式参数

\      忽略正则表达式中特殊字符的原有含义。
^     匹配正则表达式的开始行。
$     匹配正则表达式的结束行。
\<    从匹配正则表达式的行开始。
\>    到匹配正则表达式的行结束。
[ ]    单个字符,如[A]A符合要求 。
[ - ]  范围,如[A-Z],即ABC一直到Z都符合要求 。
.     所有的单个字符。
*    有字符,长度可以为0

 

 

3 示例

[1] 在多个文件中搜索

grepstring file1 file2 file3 ...

 

[2] 标记匹配颜色

grep string filename --color=auto

 

[3] 只列出文件中匹配到的那部分

echo this is a test line. | grep -o -E[a-z]+\.    #结果:line.

 

[4] 打印样式匹配所位于的字符或字节的偏移

echo gun is not unix | grep -b -o not          #结果:7:not

说明:一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。选项 -b -o 一般总是配合使用。

 

[5] 制动多个匹配样式

$echo this is a text line | grep -e "this" -e "line" -o   #结果如下:

this

line 

#或:也可以使用-f选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。

$cat patfile

aaa

bbb

$echo aaa bbb ccc ddd eee | grep -f patfile -o
#或:使用扩展模式匹配

$echo this is a test line | grep -E this|line -o


0 0
原创粉丝点击