grep与正则表达式,带某个关键字的段落

来源:http://www.smjxgs.com 作者:4887王中王鉄算盘奖结果 人气:128 发布时间:2019-08-08
摘要:想从出口中搜寻(grep)带有个别关键字的段落——即 grep -p 的用法 update @20170424 on Linux we can use below command: awk 'BEGIN{RS=ORS="nn";FS=OFS="n"}/V403PAA/' PA4.jil ==================================================

想从出口中搜寻(grep)带有个别关键字的段落——即 grep -p 的用法

update @20170424

on Linux we can use below command:

awk 'BEGIN{RS=ORS="nn";FS=OFS="n"}/V403PAA/' PA4.jil

==============================================================================================================

自打首次接触grep以来,先后经历过上面那几个差异的用法

cat file|grep text

cat file|grep -i text

cat file|grep -v text

cat file|grep '^db2'

等等,直到以后又学了个新的用法

db2 list db directory|grep -p TESTDB
本条 -p 的选项太爽了,大大升高功能啊,综上说述还恐怕有相当的多别的的指令,别的的 skill 等等,恐怕一直没放在心上过它们,大概都是在用一种笨笨的主意
如上所述,如果哪儿本身蒙受难点,感觉那个主题材料应该有更简单的方法落成,那么这几个标题就自然有更简短的法子,独一需求做的正是search 到这种格局!!

急忙检查db2的 db2diag.log 日志,这些也很酷!

cat db2diag.log|grep -e "SQL....N"

另,转一篇 grep 与正则表明式的用法:

首先要铭记的是: 正则表明式与通配符分歧等,它们表示的意思并差别样!
正则表明式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以拍卖正则表达式的字符串。vim、grep、awk 、sed都支持正则表明式,也多亏因为出于它们扶助正则,才呈现它们庞大;在从前上班的同盟社里,由于商城是依据web的服务型网址(nginx),对正则的须求十分大,所以也花了点时间研讨正则,特与我们分享下:

1基础正则表达式
grep 工具,之前介绍过。
grep -[acinv] '找出内容串' filename
-a 以文件文件措施寻觅
-c 总计找到的符合行的次数
-i 忽略大小写
-n 顺便输出游号
-v 反向选取,即找 未有搜索字符串的行
在那之中搜索串可以是正则表明式!

1
搜寻有the的行,并出口行号
$grep -n 'the' regular_express.txt
搜 索未有the的行,并出口行号
$grep -nv 'the' regular_express.txt

2 利 用[]研究集结字符
[] 表示在那之中的某五个字符 ,比如[ade] 表示a或d或e
[email protected]:~/tmp$ grep -n 't[ae]st' regular_express.txt
8:I can't finish the test.
9:Oh! the soup taste good!

可以用^符号做[]内的前缀,表示除[]内的字符之外的字 符。
比方寻觅oo前未有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串
[email protected]:~/tmp$ grep -n '[^g]oo' regular_express.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes!

[] 内能够用范围表示,比方[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]意味着全体数字与葡萄牙共和国(República Portuguesa)语字符。 当然也能够相称^来排除字符。
寻找包含数字的行
[email protected]:~/tmp$ grep -n '[0-9]' regular_express.txt
5:However ,this dress is about $ 3183 dollars.
15:You are the best is menu you are the no.1.

行首与行尾字符 ^ $. ^ 表示行的起来,$表示行的末段( 不是字符,是岗位)那么‘^$’ 就表示空行,因为唯有
行首和行尾。
这里^与[]里头使用的^意义分歧。它象征^前面包车型地铁串是内行的起首。
诸如寻找the在初叶的行
[email protected]:~/tmp$ grep -n '^the' regular_express.txt
12:the symbol '*' is represented as star.

追寻以小写字母开端的行
[email protected]:~/tmp$ grep -n '^[a-z]' regular_express.txt
2:apple is my favorite food.
4:this dress doesn't fit me.
10:motorcycle is cheap than car.
12:the symbol '*' is represented as star.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
[email protected]:~/tmp$

招来开始不是俄语字母的行
[email protected]:~/tmp$ grep -n '^[^a-zA-Z]' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
21:#I am VBird
[email protected]:~/tmp$

$表示它前边的串是相当熟练的末段,比方 '.' 代表 . 在一行的末梢
追寻末尾是.的行
[email protected]:~/tmp$ grep -n '.$' regular_express.txt //. 是正则表明式的特殊符号,所以要用转义
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5:However ,this dress is about $ 3183 dollars.
6:GNU is free air not free beer.
.....

注意在MS的系统下转移的文书文件,换行会助长三个 ^M 字符。所以最终的字符会是掩盖的^M ,在拍卖Windows
上面包车型地铁文书时要极其注意!
可以用cat dos_file | tr -d 'r' > unix_file 来删除^M符号。 ^M==r

那正是说'^$' 就意味着除非洲开发银行首行尾的空行拉!
检索空行
[email protected]:~/tmp$ grep -n '^$' regular_express.txt
22:
23:
[email protected]:~/tmp$

搜索非空行
[email protected]:~/tmp$ grep -vn '^$' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
..........

大肆一个字符. 与重复字符 *

在bash中*意味着通配符,用来代表专擅个 字符,但是在正则表明式中,他含义差异,*意味着有0个或多少个 有个别字符。
例如 oo*, 表示第四个o一定期存款在,第二个o能够有多个或四个,也得以未有,因而代表至少三个o.

点. 代表二个随便字符,必须存在。 g??d 能够用 'g..d' 表示。 good ,gxxd ,gabd .....都严丝合缝。

[email protected]:~/tmp$ grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! the soup taste good!
16:The world is the same with 'glad'.
[email protected]:~/tmp$

寻找多个o以上的字符串
[email protected]:~/tmp$ grep -n 'ooo*' regular_express.txt //前四个o一定期存款在,第多个o可不曾,也可有三个。
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!

找寻g早先和终极,中间是最少多个o的字符串,即gog, goog....gooog...等
[email protected]:~/tmp$ grep -n 'goo*g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!

搜索g起始和尾声的字符串在的行
[email protected]:~/tmp$ grep -n 'g.*g' regular_express.txt // .*表示 0个或多个随机字符
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.

限定一而再重复字符的限量 { }
. * 只好限制0个或五个, 如若要适用的限制字符重复数量,就用{范围} 。范围是数字用,隔开 2,5 代表2~5个,
2意味着2个,2, 表示2到更多少个
留神,由于{ }在SHELL中有特异意义,因而作为正则表达式用的时候要用转义一下。

研究富含多个o的字符串的行。
[email protected]:~/tmp$ grep -n 'o{2}' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!

搜索g后面跟2~5个o,前面再跟一个g的字符串的行。
[email protected]:~/tmp$ grep -n 'go{2,5}g' regular_express.txt
18:google is the best tools for search keyword.

查究富含g前边跟2个以上o,前边再跟g的行。。
[email protected]:~/tmp$ grep -n 'go{2,}g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!

注意,相让[]中的^ - 不表现优良含义,能够献身[]内部内容的末尾。
'[^a-z.!^ -]' 代表并未有小写字母,没有. 未有!, 未有空格,未有- 的 串,注意[]内部有个小空格。

另外shell 里面包车型地铁反向采用为[!range], 正则里面是 [^range]

2扩充正则表明式

推而广之正则表明式是对基础正则表明式加多了多少个极度构成的。
它令有个别操作更是惠及。
比如大家要去除 空白行和行首为 #的行, 会这样用:
[email protected]:~/tmp$ grep -v '^$' regular_express.txt | grep -v '^#'
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
............

不过使用帮助扩充正则表明式的 egrep 与恢弘特殊符号 | ,会便利广大。
只顾grep只协助基础表达式, 而egrep 援救增加的, 其实 egrep 是 grep -E 的别称而已。由此grep -E 援助扩展正则。
那么:
[email protected]:~/tmp$ egrep -v '^$|^#' regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
....................
此地| 表示或的涉及。 即满足 ^$ 也许 ^# 的字符串。

此地列出多少个扩大特殊符号:
+, 于 . * 成效类似,表示 二个或多少个重复字符。
?, 于 . * 效率类似,表示0个或叁个字符。
|,表示或涉及,譬如 'gd|good|dog' 代表有gd,good或dog的串
(),将部分内容合成三个单元组。 比如 要搜索 glad 或 good 可以这么 'g(la|oo)d'
()的补益是能够对小组使用 ? * 等。
比方要找出A和C初始结尾,中间有起码二个(xyz) 的串,能够那样 : 'A(xyz) C'

grep -p 的用法 update @20170424 on Linux we can use below command: awk 'BEGIN{RS=ORS="nn";FS=OFS="n"}/V403PAA/...

$表示它前边的串是纯熟的末尾,比如 '.' 表示 . 在一行的尾声
找出末尾是.的行
[email protected]:~/tmp$ grep -n '.$' regular_express.txt //. 是正则表明式的特殊符号,所以要用转义
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5:However ,this dress is about $ 3183 dollars.
6:GNU is free air not free beer.
.....

[email protected]:~/tmp$ grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! the soup taste good!
16:The world is the same with 'glad'.
[email protected]:~/tmp$

搜寻以小写字母起首的行
[email protected]:~/tmp$ grep -n '^[a-z]' regular_express.txt
2:apple is my favorite food.
4:this dress doesn't fit me.
10:motorcycle is cheap than car.
12:the symbol '*' is represented as star.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
[email protected]:~/tmp$

查找初步不是德文字母的行
[email protected]:~/tmp$ grep -n '^[^a-zA-Z]' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
21:#I am VBird
[email protected]:~/tmp$

检索包括g前面跟2个以上o,前边再跟g的行。。
[email protected]:~/tmp$ grep -n 'go{2,}g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!

其余shell 里面包车型地铁反向采用为[!range], 正则里面是 [^range]

那就是说'^$' 就象征除非洲开发银行首行尾的空行拉!
检索空行
[email protected]:~/tmp$ grep -n '^$' regular_express.txt
22:
23:
[email protected]:~/tmp$

搜索包括多个o的字符串的行。
[email protected]:~/tmp$ grep -n 'o{2}' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!

注意,相让[]中的^ - 不显现非常意义,能够投身[]在那之中内容的后面。
'[^a-z.!^ -]' 表示未有小写字母,未有. 未有!, 未有空格,未有- 的 串,注意[]在那之中有个小空格。

寻找g初始和终极的字符串在的行
[email protected]:~/tmp$ grep -n 'g.*g' regular_express.txt // .*表示 0个或多少个随机字符
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.

[] 内能够用范围表示,举例[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]意味着具有数字与日语字符。 当然也能够相称^来排除字符。
检索包含数字的行
[email protected]:~/tmp$ grep -n '[0-9]' regular_express.txt
5:However ,this dress is about $ 3183 dollars.
15:You are the best is menu you are the no.1.

1基础正则表明式
grep 工具,从前介绍过。
grep -[acinv] '搜索内容串' filename
-a 以文件文件格局搜索
-c 总计找到的符合行的次数
-i 忽略大小写
-n 顺便输骑行号
-v 反向选择,即找 未有检索字符串的行
在那之中寻觅串能够是正则表明式!

找出多个o以上的字符串
[email protected]:~/tmp$ grep -n 'ooo*' regular_express.txt //前多个o一定期存款在,第四个o可不曾,也可有多个。
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! the soup taste good!
18:google is the best tools for search keyword.
19:goooooogle yes!

行首与行尾字符 ^ $. ^ 表示行的初始,$表示行的最后( 不是字符,是岗位)那么‘^$' 就代表空行,因为独有
行首和行尾。
这里^与[]内部使用的^意义分裂。它意味着^前边的串是懂行的开始。
比如说搜索the在开班的行
[email protected]:~/tmp$ grep -n '^the' regular_express.txt
12:the symbol '*' is represented as star.

此地列出多少个扩大特殊符号:
+, 于 . * 作用类似,表示 四个或多少个再一次字符。
?, 于 . * 效用类似,表示0个或一个字符。
|,表示或关系,比方 'gd|good|dog' 代表有gd,good或dog的串
(),将部分剧情合成三个单元组。 比方 要寻觅 glad 或 good 能够如此 'g(la|oo)d'
()的平价是足以对小组利用 ? * 等。
举个例子要找寻A和C起初结尾,中间有起码三个(xyz) 的串,能够这样 : 'A(xyz) C'

查找非空行
[email protected]:~/tmp$ grep -vn '^$' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
..........

搜索g后面跟2~5个o,后边再跟三个g的字符串的行。
[email protected]:~/tmp$ grep -n 'go{2,5}g' regular_express.txt
18:google is the best tools for search keyword.

2 利 用[]寻觅集结字符
[] 表示在那之中的某三个字符 ,比如[ade] 表示a或d或e
[email protected]:~/tmp$ grep -n 't[ae]st' regular_express.txt
8:I can't finish the test.
9:Oh! the soup taste good!

在bash中*表示通配符,用来代表私下个 字符,然而在正则表明式中,他含义差别,*代表有0个或五个 有些字符。
例如 oo*, 表示第二个o一定期存款在,第叁个o能够有三个或五个,也足以未有,因而代表至少八个o.

正则表明式只是一种表示法,只要工具援救这种表示法, 那么该工具就足以管理正则表明式的字符串。vim、grep、awk 、sed 都援救正则表明式,也正是因为出于它们帮助正则,才显得它们壮大;在原先上班的公司里,由于集团是基于web的服务型网址(nginx),对正则的须要一点都十分大,所以也花了点时间切磋正则,特与我们分享下:

搜索g开始和结尾,中间是最少一个o的字符串,即gog, goog....gooog...等
[email protected]:~/tmp$ grep -n 'goo*g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!

那么该工具就能够拍卖正则表明式的字符串。vim、grep、awk 、sed 都支持正则表明式,...

点. 代表贰个无限制字符,必须存在。 g??d 可以用 'g..d' 表示。 good ,gxxd ,gabd .....都合乎。

随机二个字符. 与重复字符 *

1
招来有the的行,并出口行号
$grep -n 'the' regular_express.txt
搜 索未有the的行,并出口行号
$grep -nv 'the' regular_express.txt

可以用^符号做[]内的前缀,表示除[]内的字符之外的字 符。
比如说搜索oo前未有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串
[email protected]:~/tmp$ grep -n '[^g]oo' regular_express.txt
2:apple is my favorite food.
3:Football game is not use feet only.
18:google is the best tools for search keyword.
19:goooooogle yes!

限制延续重复字符的限制 { }
. * 只好限制0个或多少个, 假诺要适于的界定字符重复数量,就用{范围} 。范围是数字用,隔离 2,5 表示2~5个,
2代表2个,2, 表示2到更三个
小心,由于{ }在SHELL中有例外意义,因而作为正则表明式用的时候要用转义一下。

2扩展正则表达式

留心在MS的系统下转移的文件文件,换行会助长贰个 ^M 字符。所以最后的字符会是藏身的^M ,在拍卖Windows
上面包车型客车文书时要特别注意!
可以用cat dos_file | tr -d 'r' > unix_file 来删除^M符号。 ^M==r

而是使用协助扩展正则表明式的 egrep 与扩大特殊符号 | ,会有利于广大。
只顾grep只帮衬基础表达式, 而egrep 援救扩充的, 其实 egrep 是 grep -E 的小名而已。由此grep -E 补助扩张正则。
那么:
[email protected]:~/tmp$ egrep -v '^$|^#' regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
....................
那边| 表示或的关联。 即满足 ^$ 恐怕 ^# 的字符串。

推而广之正则表明式是对基础正则表明式增添了多少个杰出构成的。
它令某些操作越发方便。
例如我们要去除 空白行和行首为 #的行, 会这样用:
[email protected]:~/tmp$ grep -v '^$' regular_express.txt | grep -v '^#'
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
............

本文由4887王中王鉄算盘奖结果发布于4887王中王鉄算盘奖结果,转载请注明出处:grep与正则表达式,带某个关键字的段落

关键词:

最火资讯