首页 » Grep - 搜索文本

Grep - 从文件中搜索字符串

Grep命令行参数

输出控制

-o
只输出匹配部分(把匹配部分从行中挑出来)
-H
显示文件名
-h
不显示文件名
-C n
显示匹配上下文
-v
反检索,显示不匹配的行
-l
输出匹配的文件
-L
输出不匹配的文件
-n
显示行号

搜索控制

-i
忽略大小写
-w
匹配整个word
-x
匹配整行

行为模式

-P
Perl正则风格
-E
扩展的(Extension)正则表达式。grep -E等同egrep。
-F
固定的(Fixed)字串搜索。grep -F等同fgrep。

处理二进制文件的选项

-I
不搜索二进制文件,等同--binary-files=without-match
-a
把二进制文件当做文本文件,等同--binary-files=text

杂项

-c
统计匹配行数
-s
slient模式,不显示不存在或者无法读取文件的错误信息

扩展的正则表达式

使用|(grep需转义\|

$ cat odyssey.txt | egrep "speak with you briefly|I am flying to escape death" 
have great power among the Argives. I am flying to escape death at
"Stranger, I should like to speak with you briefly about another matter.

使用?(grep需转义\?

$ cat str.txt | egrep '<a href="https?[^>]*>' -o 
<a href="http://www.berlinix.com">
<a href="https://www.berlinix.com/signin.php">

搜索带有特殊符号的字串,如搜索成员函数调用:

$ find ./ -name "*.php"|xargs grep "->tips"
grep:无效选项 -- >

->解析成了一个选项,需要对-进行转义\->tips

$ find ./ -name "*.php"|xargs grep -i "\->tips"

Grep的近亲程序

zgrep 在gzip压缩文件中搜索字符串

对于已归档的日志文件,要搜索特定字符串时zgrep非常有用。

$ zgrep -a 29995 logs.before.131031.tar.gz

-a表示在二进制文件中搜索文本之意。

分享

0