一、简介

grep是一种搜索类命令,用于过滤或搜索特定字符,可搭配正则表达式使用。grep家族还包括了egrep和fgrep。

 

二、命令格式

grep [option] pattern file == grep[参数] [匹配模式] [查找的文件]

 

三、常用option

option

说明

-c

显示符合条件的行数

-i

查询时忽略大小写

-o

只显示匹配pattern部分

-n

显示符合条件的行标号

-r

当查询对象非文件而是目录,则需使用该参数,用于递归查询

-v

显示不匹配条件的行

-E

grep -E = egrep,除了基本正则表达式外,还可以使用扩展正则表达式

-F

grep -F = fgrep,使用任何正则表达式中的元字符表示其自身字面意义,不再特殊

--color=auto

将匹配信息用颜色标亮

备注:

1)pattern如果是表达式或超过2单词,则需用引号进行引用。可用单引号和双引号,区别在于单引号看到的是什么就是什么,不管是常量还是变量都不会发生替换。

2)其他选项请man grep命令进行查询。

 

四、grep示例

 

示例文本信息:

root@LTY:/opt# cat test.txt

littletangyuan test1

abcdefg

LittleTangyuan

hijklmn

littletangyuan test2

opqrst

LITTLETANGYUAN

uvwxzy

LittleTangyuan

[A-Z]...[0-9]

 

1)统计包含字符串`little tangyuan`的行数

root@LTY:/opt# grep -c "little tangyuan" test.txt

2

2)不区分被搜索字符串大小写,找出包含字符串`little tangyuan`的行

root@LTY:/opt #grep -i "little tangyuan" test.txt

little tangyuantest1

Little Tangyuan

little tangyuantest2

LITTLE TANGYUAN

Little Tangyuan

3)找出包含字符串`tangyuan`,并只显示匹配部分

root@LTY:/opt #grep -o "tangyuan" test.txt

tangyuan

tangyuan

4)找出包含字符串`little tangyuan`的行,将匹配信息标亮

root@LTY:/opt #grep --color=auto "little tangyuan" test.txt

little tangyuantest1

little tangyuantest2

5)找出包含字符串`little tangyuan`的行,并打印匹配行号

root@LTY:/opt #grep -n "little tangyuan" test.txt

1:littletangyuan test1

5:littletangyuan test2

6)搜索当前目录文件,找出包含字符串`little tangyuan`的行

root@LTY:/opt #grep -r "little tangyuan" ./

./test.txt:littletangyuan test1

./test.txt:littletangyuan test2

7)找出不包含字符串`little tangyuan`的行

root@LTY:/opt #grep -v "little tangyuan" test.txt

abcdefg

Little Tangyuan

hijklmn

opqrst

LITTLE TANGYUAN

uvwxzy

Little Tangyuan

8)在test.txt里找到字符`l`开头的行

root@LTY:/opt #grep "^l" test.txt

little tangyuantest1

little tangyuantest2

9)找出所有包含little或Little的行

root@LTY:/opt #egrep "little|Little" test.txt

little tangyuantest1

Little Tangyuan

little tangyuantest2

Little Tangyuan

10)找到和字符串`[A-Z]...[0-9]`匹配的行,其中[A-Z]/.../[0-9]没有转义

root@LTY:/opt #fgrep "[A-Z]...[0-9]" test.txt

[A-Z]...[0-9]