首页 > 技术文章 > [转载]grep查看上下文及简单正则表达式

workingdiary 2019-02-18 15:58 原文

转载自:https://www.cnblogs.com/mfryf/p/3336288.html

inux grep 显示前后几行的信息
2016年03月02日 14:10:58 ChenHui246 阅读数:36516

grep 后面带上-A -B -C 参数可以多显示几行内容

grep -A 5 可以显示匹配内容以及后面的5行内容
grep -B 5 可以显示匹配内容以及前面的5行内容
grep -C 5 可以显示匹配内容以及前后面的5行内容

$ cat size.txt
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

$ cat size.txt | grep 'a022021'
a022021

$ cat size.txt | grep 'a022021' -C 2
m7187998
m7282064
a022021
a061048
m9324822

$ cat size.txt | grep 'a022021' -B 2
m7187998
m7282064
a022021

$ cat size.txt | grep 'a022021' -A 2
a022021
a061048
m9324822

 

转自:https://www.linuxidc.com/Linux/2015-03/114642.htm

来源:Linux社区  作者:diaoxuesong

参数说明:

n - 输出行号

r - 遍历

E - 使用正则表达式

如此就会将你要找的内容遍历出来,并列出文件名和行号。

 

转自:https://www.linuxidc.com/Linux/2013-08/88534.htm

grep使用简明及正则表达式

来源:Linux社区  作者:phenixikki

1、grep使用简明

使用基本正则表达式定义的模式来过滤文本,并将符合模式的文本行显示出来
grep [options] PATTERN [FILE...]

-i      :忽略大小写
--color  :符合模式的文本行显示颜色
-v      : 显示没有被模式匹配到的行
-o      :只显示被模式匹配到的字符串
-E      : 使用扩展正则表达式(= egrep)

2、基本正则表达式(PATTERN中的元字符匹配)
(1)字符匹配
.  : 匹配任意单个字符
[]  : 匹配指定范围内的任意单个字符
[^] :匹配指定范围外的任意单个字符


[[:digit:]]    :匹配数字 [0-9]
[[:lower:]]  :匹配小写字母 [a-z]
[[:upper:]]  :匹配大写字母 [A-Z]
[[:punct:]]  :匹配特殊字符
[[:space:]]  :匹配空格
[[:alpha:]]  :匹配字母 [a-zA-Z]
[[:alnum:]]  :匹配字母和数字 [0-9a-zA-Z]

 

(2)次数匹配
*      : 匹配其前面的字符任意次(0次-任意次)
.*      : 任意长度的任意字符
\?      : 匹配其前面的字符1次或0次
\{m,n\} : 匹配其前面的字符至少m次,至多n次
        例如  \{1,\}  :匹配其前面的字符至少1次
              \{0,3\} :匹配其前面的字符0到3次

 

(3)位置锚定
^      : 锚定行首
$      : 锚定行尾
^$      : 表示空白行

\<或\b    :锚定词首
\>或\b    :锚定词尾

 

(4)分组及后向引用
\(\)        :分组,将之后需要引用的内容分组囊括起来
\n      : 后向引用,即引用前面第n个括号内包含的所有内容

 


3、扩展正则表达式(PATTERN中的元字符匹配扩展)
(1)次数匹配
?        : 匹配其前面的字符1次或0次
+        : 匹配其前面的字符至少1次
{m,n}    : 匹配其前面的字符至少m次,至多n次

 

(2)分组及后向引用
()            :分组,将之后需要引用的内容分组囊括起来
\n      : 后向引用,即引用前面第n个括号内包含的所有内容

 

(3)或者
|        :匹配左边的字符串或者右边的字符串
        例如  B|boy  : B或boy

 

补充:

1. 包含a或b或c

grep -E "a|b|c" test.txt

2. 同时包含a和b

grep a test.txt|grep b

3. 包含特殊字符需要转义

grep 'a\.c' test.txt #查找的是a.c

grep 'a.c' test.txt #查找的是a

 

推荐阅读