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的主要内容,如果未能解决你的问题,请参考以下文章