首页 > 技术文章 > linux三剑客之grep

nancy-kou 2020-04-13 22:11 原文

grep的一些参数命令:

1.grep -c option file:显示文件中包含搜索内容行数,比如前面的命令表示显示 file中包含option内容的行数是几

2. grep -n option flie:列出所有的匹配行,并在最前面添加行的序列数

3. grep -v option file:显示文件中不包含所搜索内容的行数,这个和-c的参数正好相反

4. gep -i option file:列出所搜索内容的匹配行,搜索过程中不区分大小写

5. grep -l option *:列出所有包含option内容的文件的名

6. 在某一目录下递归[所有子目录]查找某一字串:

grep -r “字串” 目录名

例如
在opt目录下下查找哪个文件里面内容含有abcdefghigk:
[ grep -r abcdefghigk /opt/
搜索结果为:/opt/otrs/czx.txt:abcdefghigk

7. grep -w option file:精确搜索,可以说准确性搜索,比如:grep -w b* a.txt:此命令执行时,*不会默认为任何字符,只表示字面意思,就是一个*字符.

8. grep -x option file:完全匹配输出,比如:grep -x hello a.txt,只会输出某一行存在hello字符串,并且此行仅包含hello的内容。假设a.txt中有一行“hello all”,执行上述命令,此行不会被搜索到。

扩展grep(grep -E 或者 egrep):
使用扩展grep的主要好处是增加了额外的正则表达式元字符集。

打印所有包含NW或EA的行。# egrep 'NW|EA' test.txt

对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。#grep 'NW\|EA' test.txt

搜索所有包含一个或多个3的行。 # grep -E '3+' testfile

搜索所有包含0个或1个小数点字符的行。 # grep -E '2\.?[0-9]' testfile

搜索一个或者多个连续的no的行。 # grep -E '(no)+' testfile

 

不使用正则表达式:fgrep 查询速度比grep命令快,但是不够灵活:它只能找固定的文本,而不是规则表达式。

如果你想在一个文件或者输出中找到包含星号字符的行

fgrep  '*' /etc/profile
for i in /etc/profile.d/*.sh ; do

或
grep -F '*' /etc/profile
for i in /etc/profile.d/*.sh ; do
 

grep 同时搜索两个字符串

 grep -e 表达式A  -e  表达式B 文件。

 

推荐阅读