linux-grep

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux-grep相关的知识,希望对你有一定的参考价值。

--version or -V grep的版本

-A 数字N 找到所有的匹配行,并显示匹配行后N行

-B 数字N 找到所有的匹配行,并显示匹配行前面N行

-b 显示匹配到的字符在文件中的偏移地址

-c 显示有多少行被匹配到

--color 把匹配到的字符用颜色显示出来

-e 可以使用多个正则表达式

-f FILEA FILEB FILEA在FILEAB中的匹配

-i 不区分大小写针对单个字符

-m 数字N 最多匹配N个后停止

-n 打印行号

-o 只打印出匹配到的字符

-R 搜索子目录

-v 显示不包括查找字符的所有行

 

 

 

[[email protected] test]# cat test.txt 

a

b

c

d

123

456

789

aaa

bbb

ccc

ddd

eee

(*%#@^%$)

aa

bb

cc

dd

1234567890

qwertyuiop

asdfghjkl

zxcvbnm

 

1.-A

找到所有的匹配行,并显示匹配行后面N行

格式:grep -A number document

[[email protected] test]# grep -A  1 a test.txt 

a

b

--

aaa

bbb

--

aa

bb

--

asdfghjkl

zxcvbnm

 

2.-B 

格式:grep -B number document

找到所有匹配的行,并显示匹配行前面N行

[[email protected] test]# grep -B 1 c test.txt 

b

c

--

bbb

ccc

--

bb

cc

--

asdfghjkl

zxcvbnm

 

3.-b

格式:grep -b text document

显示匹配到的字符在文件中的偏移地址

[[email protected] test]# grep -b a test.txt 

0:a

20:aaa

50:aa

84:asdfghjkl

 

4.-c

格式:grep -c text document

显示有多少行被匹配到

[[email protected] test]# grep -c a test.txt 

4

 

5.--color

把匹配到的字符用颜色显示出来

[[email protected] test]# grep --color b test.txt 

技术分享

 

6.-e

可以使用多个正则表达式

[[email protected] test]# grep -e a -e b test.txt 

a

b

aaa

bbb

aa

bb

asdfghjkl

zxcvbnm

 

7.-f

FILE_A在FILEA_B中的匹配

[[email protected] test]# vi t1

a

b

AA

BB

1234567

[[email protected] test]# vi t2

b

BB

abc

[[email protected] test]# grep -f t1 t2 

b

BB

abc

 

8.-i

不区分大小写

[[email protected] test]# grep -i a t1

a

AA

 

9.-m

最多匹配N个后停止,实际上一般是匹配到N个后的那一行停止

[[email protected] test]# grep -m 2 a test.txt 

a

aaa

 

10.-n

显示行号

[[email protected] test]# grep -m 2 a -n test.txt 

1:a

8:aaa

 

11.-o

只会打印匹配到的字符

[[email protected] test]# grep -o a test.txt 

a

a

a

a

a

a

a

 

 

12.-R

 

只会在当前目录查找

[[email protected] test]# grep "a" *

a.sh:aa bb

cc.log:aaa

cc.log:a

t1:a

t2:abc

test.txt:a

test.txt:aaa

test.txt:aa

test.txt:asdfghjkl

 

 

在当前目录以及子目录查找

[[email protected] test]# grep -R aa *

a.sh:aa bb

cc.log:aaa

test.txt:aaa

test.txt:aa

 

显示不包括查找字符的所有行

[[email protected] test]# grep -v AA t1 

a

b

BB

1234567

 

 

—————————————

pattern主要参数

参数 解释

^ 匹配行首

$ 匹配行尾

[ ] or [ n - n ] 匹配[ ]内字符

. 匹配任意的单字符

* 紧跟一个单字符,表示匹配0个或者多个此字符

\ 用来屏蔽元字符的特殊含义

\? 匹配前面的字符0次或者1次

\+ 匹配前面的字符1次或者多次

X\{m\} 匹配字符X m次

X\{m,\} 匹配字符X 最少m次

X\{m,n\} 匹配字符X m---n 次

666 标记匹配字符,如666 被标记为1,随后想使用666,直接以 1 代替即可

\| 表示或的关系

 

【案例】

 

[[email protected] test]# cat test.txt 

a

abc

ABCD

1

1234

abcd1234

12789Aabcdfepomz

 

1.^ 匹配行首

[[email protected] test]# grep -n ‘^a‘ test.txt 

1:a

2:abc

6:abcd1234

 

2.$ 匹配行尾

[[email protected] test]# grep -n ‘CD$‘ test.txt 

3:ABCD

 

3. [ ]

匹配 [ ]内的字符

-  注意下面的执行是错误的

[[email protected] test]# grep -n [ a-b 7-9 ] test.txt 

grep: Invalid regular expression

[[email protected] test]# grep -n ‘[ a-b 7-9 ]‘ test.txt 

1:a

2:abc

6:abcd1234

7:12789Aabcdfepomz

 

 

4.  .

匹配任意的字符

[[email protected] test]# grep -n ‘.a‘ test.txt 

7:12789Aabcdfepomz

 

5. *

紧跟一个单字符,表示匹配0个或者多个此字符

 

技术分享

 

6. \  

用来屏蔽元字符的特殊含义

— 可以在文本内增加自己喜欢的内容,进行测试

[[email protected] test]# grep -n ‘\$‘ test.txt 

9:$

 

7. \?

匹配前面的字符0此或者多次

技术分享

 

8.  \+

匹配前面的字符1此或者多次

[[email protected] test]# grep -n --color ‘3\+‘ test.txt 

5:1234

6:abcd1234

 

9.  X\{m\}

匹配字符X m 次

技术分享

 

10. X\{m,\}

匹配字符X 最少m次

[[email protected] test]# grep -n --color ‘ab\{1,\}‘ test.txt 

同上

 

11.X\{m,n\} 

匹配字符X m-n 次

技术分享

 

12.\|

表示或的关系

技术分享

 

以上是关于linux-grep的主要内容,如果未能解决你的问题,请参考以下文章