怎样用grep匹配多grep 匹配两个字符串串

linux grep命令详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
linux grep命令详解
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩8页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢grep -v同时排除多个文件或目录-linux-操作系统-壹聚教程网grep -v同时排除多个文件或目录
grep是linux中一个强大的文件搜索命令了,他可以使用正则表达式搜索文本,并把匹 配的行打印出来,下面我们来看它的冰山一角吧。
排除掉aaaa和排除bbbb,使用如下代码:
grep -v 'aaaa\|bbbb'& file
grep查找多个数字的文件:
-r 递归,-E:正则& -l:只显示文件名
root@116.255.139.240:~/a# grep -r -E '081|' *&
a.txt:100081&
b.txt:10086&
c/cc.txt:0341028&
c/cc.txt:100081&
c/cc.txt:10086&
c/cc.txt:10001&
c.txt:10001&
d.txt:0341028&
上一页: &&&&&下一页:相关内容& & & & & & GNU sed和UNIX sed 写法不一样
匹配多个关键词,打印出匹配的行,效果类似于 grep&
grep&hello\|world&file&&&output
或者用扩展正则
grep&-E&'(hello|world)'&file&&&output
如果grep用的是 -e 小写e参数,需要加上反斜杠转移,即:
grep&-e&'\(hello\|world\)'&file&&&output
GNU sed 写法
sed&-n&'/hello\|world/p'&file&&&output
这种写法 UNIX的sed不支持,真是奇怪,UNIX的sed需要下面这样的写法,这种写法GNU的sed也支持。
sed&-n&'/hello/p;&/world/p'&&file&&&output
阅读(...) 评论()dayong_guo 的BLOG
用户名:dayong_guo
文章数:27
评论数:45
访问量:50718
注册日期:
阅读量:5863
阅读量:12276
阅读量:404398
阅读量:1093264
51CTO推荐博文
当要查看文本中特定字符的时候,我们会经常用到GREP、SED、AWK,今天我们一起来学习下LINUX中的文本过滤工具GREP和SED的基本使用:
&&&正则表达式: &&&&&定义: &&&&&&&&&是一些字符或是特殊字符串模式的集合。 &&&&&功能:根据模式搜索文本,并将符合模式的文本行显示出来。 &&&&&Pattern(模式):& &&&&&&&&&文本字符和正则表达式的元字符组合而成匹配条件 &grep: &&&grep简介 &grep(global&search&regular&RE)&& /span&and&print&out&the&line,全面搜索正则表达式并把行打印出来 &&&&&是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 &&&&&Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。 &egrep是grep的扩展,支持更多的RE元字符,&fgrep就是fixed&grep或fast&grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符 &表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。 &&&&&&grep是很常见也很常用的命令,它最重要的功能就是进行字符串数据的比较,然后将符合用户要求的字符串显示出来。 &在这里需要说明的是,grep在数据中查找一个字符串时,是以&整行&为单位来进行数据选取的。也就是说,假如一个文件内有10行,其中有两行具有 &所搜索的字符串,则将那两行显示在屏幕上,其它则丢去。 &&&&&注:默认情况下正则表达式工作在贪婪模式下 &grep&[options]&PATTERN&[FILE...] &&&&&-a:在二进制文件夹中,以文本文件的方式搜索数据。 &&&&&-i:忽略大小写 &&&&&&&&&&-v:反向查询,即显示出没有被&搜索字符串&内容的哪一行 &&&&&-o:只显示被模式匹配的字符串 &&&&&&&&&grep&-o&'root'&/etc/passwd &&&&&&&&&root &&&&&&&&&.... &&&&&-n:输出行号 &&&&&-c:计算找到&搜索字符串&的次数 &&&&&-A:#&匹配结果并将匹配结果的后#行一并显示 &&&&&-B:&#&匹配结果并将匹配结果的前#行一并显示 &&&&&-C:A&and&b&&显示匹配结果前和后各几行。 &正则表达式就是里面有一些元字符,这些字符不表示它本身的意思,而表示通配的意义。 &&介绍grep进行文件搜索时所用到的云字符并加以介绍 &&&&&&搜索特定字符串、利用[]来搜索集合字符、任意一个字符(.)与重复字符(*)、 &&&&&行首与行尾字符^$、限定连接重复字符范围{}、位置锚定、组 &&&&& &下面我们就来一起学习元字符的含义: &^&:&锚定行首 &&&&&例如: &&&&&&&&&'^root':表示以root作为行首进行查找 &$&:&锚定行尾 &&&&&例如: &&&&&&&&&'nologin$':表示查找以nologin结尾所匹配的行 &.&:&匹配任意单个字符 &&&&&例如: &&&&&&&&&'r..t':表示查找以r开头,t结尾并且中间存在两个字符匹配的行 &*&:&一个单字符后紧跟*,匹配0个或多个此单字符 &&&&&例如: &&&&&&&&&'ok*':表示以o为开头后面可以没有k个字符,也可以出现多次 &.*:&任意字符 &&&&&例如: &&&&&&&&&'root.*':表示查找以root开头后面跟任意字符所匹配的行 &[]:匹配[]内字符序列范围 &&&&&例如: &&&&&&&&&'[a-z]'表示匹配[]任意一个小写字母 &[^]:匹配[]内以外的字符串 &&&&&例如: &&&&&&&&&'[^root]':表示除root以外的行 &^$:显示空白行 &&&&&例如: &&&&&&&&&'^$':表示以空白行作为模式并显示匹配的行 &\&:&其后面的任意string必须作为单词首部出现 &&&&&例如: &&&&&&&&&'\&root':表示查找以root作为模式而且必须出现在行首 &\&:&其前面的任意string必须作为单词尾部出现& &&&&&例如: &&&&&&&&&'nologin\&':表示查找以root作为模式而且必须出现在行尾 &\&sting\&:&以string为整体并进行对文本文件进行查找 &&&&&例如: &&&&&&&&&'\&root\&':表示以root为单词并进行搜索 &\(\):分组 &&&&&例如: &&&&&&&&&\(ab\)*:把ab当作整体,ab可以出现0次,1次,或多次 &\(\)\1:引用第一个左括号以及与之对应的右括号所包括的所有内容 &&&&&\2: &&&&&\3: &&&&&例如: &&&&&&&&&\(ab\)\1:表示以ab为以个整体显示,并引用前面ab字符串显示出来 &&\&:用来注释一个元字符的特殊含义。因为有在shell中一些元字符有特殊含义。 &&&&&例如: &&&&&&&&&'\/'表示查找以'/'作为模式进行查找 &pattern\{m\}:用来匹配前面pattern出现n次 &&&&&例如: &&&&&&&&&'root\{2\}:表示匹配root字符串而且必须出现2次 &pattern\{m,&\}:用来匹配前面pattern至少m次,多则不限 &&&&&例如:'root\{1,&\}:表示至少出现1次root,多则不限 &pattern\{m,n\}:用来匹配前面pattern至少m次,至多n次 &&&&&例如: &&&&&&&&&'root\{1,&2\}:表示至少出现1次root,至多2次 &&&&&&&&& &&&&&&&&& &EGREP:&&&&&& &egrep和grep&-E的元字符扩展集 &+:匹配一个或多个先前的字符。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。 &?:匹配零个或多个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。 &a|b|c:匹配a或b或c。如:grep|sed匹配grep或sed &():分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。 &x{m},x{m,},x{m,n}:作用同x\{m\},x\{m,\},x\{m,n\} &&POSIX字符类: &&[[:space:]]:所有空格字符 &&&&&[[:punct:]]:标点符号 &&&&&[[:lower:]]:小写字母 &&&&&[[:upper:]]:大写字母 &&&&&[[:digit:]]:数字 &&&&&[[:alnum:]]:数字和大小写字母 &&&sed基本用法: &&sed(Stream&EDitor):它是一种流编辑器 &sed:文本编辑器,而不是字处理器,只是操作纯ASCII码文本的,其次它在操作文本的时候,是按行进行的,逐行进行。 &&&&&sed的主要功能是实现逐行处理文本的,所以我们称它为行编辑器。 &&&&& &sed的处理机制: &&&&&每当处理一个文本文件时,它不会直接编辑文本文件的本身,而是将文本文件的内容逐行读取到内存空间里,而后在内存空间里完成编辑工作,随后将编辑出的结 &&&&&果以标准输出显示到屏幕上。 &&&&&我们称这个内存空间成为模式空间。 &&&&& &sed:&模式空间 &&&&&默认不编辑原文本文件本身,仅对模式空间中的数据做处理;而后将处理结束后,将模式空间打印至屏幕。 &&&sed&[options]&'AddressCommand'&file&... &&&&&-n:&静默模式,不再默认显示模式空间中的内容,只显示符合条件的行。 &&&&&-i:&直接修改原文件 &&&&&-e&SCRIPT&-e&SCRIPT:可以同时执行多个脚本 &&&&&-f&/PATH/TO/SED_SCRIPT &&&&&&&&&sed&-f&/path/to/scripts&&file &&&&&-r:&表示使用扩展正则表达式 &&&&& &Address: &1、StartLine,EndLine &&&&&比如1,10,表示第一行到第10行 &&&&&$:表示最后一行 &&&&&$-1:表示倒数第二行 &2、/RegExp/:支持正则表达式 &&&&&/^root/ &3、/pattern1/,/pattern2/ &&&&&第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行 &4、LineNumber &&&&&指定的行 &5、StartLine,&+N &&&&&从startLine开始,向后的N行; &&&&&&'1.+2': &Command: &&&&&d:&删除符合条件的行; &&&&&&&&&For&example:删除/etc/inittab文件中1到10行的内容 &&&&&&&&&&&&&#&sed&'1,10d'&/etc/inittab &&&&&&&&&For&example:删除/etc/passwd文件中包括hdoop的行 &&&&&&&&&&&&&#&sed&'/hdoop/d'/etc/passwd &&&&&p:&显示符合条件的行; &&&&&&&&&For&example:显示/etc/passwd文件中以hdoop开头的行 &&&&&&&&&&&&&#&sed&'/^hdoop/p'&/etc/passwd& &&&&&a&\string:&在指定的行后面追加新行,内容为string &&&&&&&&&For&example:显示/etc/passwd文件中以hdoop开头的行后面追加&I&am&hdoop& &&&&&&&&&&&&&#&sed&'/^hdoop/a&\I&am&hdoop&/etc/passwd &&&&&&&&&如果想加两行的话,我可以使用换行符&\n:可以用于换行 &&&&&i&\string:&在指定的行前面添加新行,内容为string &&&&&&&&&For&example:显示/etc/passwd文件中以hdoop开头的行前面追加&I&am&hdoop& &&&&&&&&&&&&&#&sed&'/^hdoop/i&\I&am&hdoop'&/etc/passwd &&&&&r&FILE:&将指定的文件的内容添加至符合条件的行处 &&&&&&&&&For&example:在/etc/passwd文件中第二行后面追加/etc/inittab文件中的内容 &&&&&&&&&&&&&#&sed&'2r&/etc/inittab&/etc/passwd&即可: &&&&&&&&&&&&&如果是在指定第一行和第二行后面添加指定文件内容的行 &&&&&&&&&&&&&#&sed&'1,2r&/etc/inittab&/etc/passwd &&&&&w&FILE:&将地址指定的范围内的行另存至指定的文件中;& &&&&&&&&&For&example:在/etc/passwd文件中以hdoop开头的行保存至/tmp/hdoop.bak &&&&&&&&&&&&&#&sed&'/^hdoop/w&/tmp/hdoop.bak'&/etc/passwd &&&&&s/pattern/string/修饰符:&查找并替换,默认只替换每行中第一次被模式匹配到的字符串 &&&&&&&&&For&example:查找/etc/passwd文件中hdoop字符换成大写的hoop &&&&&&&&&&&&&#&sed&'s/hdoop/HDOOP/'&/etc/passwd &&&&&&&&&修饰符 &&&&&&&&&&&&&g:&全局替换 &&&&&&&&&&&&&i:&查找时忽略字符大小写&&& &&&&&&\(\),&\1,&\2 &&&&&For&example:将下面的like修改为liker,love修改为lover &&&&&&&&&l..e:&like&&&&&&&&&love&&&&&&&&& &&&&&&&&&#&sed&'s#\(l..k\)#\1r#g'&/tmp/text &&&&&&&&&#&sed&'s#l..k#&r#g'&/tmp/text &&&&&&:&引用模式匹配整个串&&&& &&&&& &&&&&For&example:将下面的小写l换成大小l &&&&&&&&&like&&&&&&&&&love&&&&&&&&&#&sed&'s#l\(..e\)#L\1#g'&sed.text& &&&&&grep和sed命令的使用,就先告一段落,以上内容会陆续进行添减,敬请关注:&
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
18:11:31 10:07:03问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
sf提示我“请描述问题”,那么..
如题所述...感谢
sf提示我“请详细描述问题”我也是醉了...
那我就详细说说吧...
我参加前天的hackathon的时候手贱,抄了网上一份很不靠谱的代码(Applescript的),然后呵呵,把我桌面给清空了。
你可能会问:”什么?难道你没有用Time Machine吗?“
哈哈哈哈哈哈,我参加Hackathon的前一天,电脑突然提示我,亲爱的用户我需要重建你的备份以更好的备份之类的。我就随手点了个好上去睡觉了。
翌日起床准备去参加hackathon的时候特么还没搞完...
(事实上似乎是我桌下的服务器在下片导致慢的...我买了台服务器里面组了RAID1阵列来跑Time Machine...还有三点两地的中的第三点云备份刚准备传上去...数据还是丢了哈哈你说讽刺不...)(我的数据不大也就是20G左右)
哈哈哈哈,然后比赛码代码的时候里面有个部分要用到applescript调用keynote的一个玩意儿。因为applescript这货的资料实在是不多,所以不知道找了一份什么坑爹的东西,照着一打,哎哟我妈,真开心,只见鼠标卡了一瞬,我就跪了。桌面没了。
哈哈哈哈哈哈哈,幸亏比赛的拙作品的代码还没丢,于是提交上去还算顺利。
总之心情被搅得很糟糕,写了好久的课设,收集了好久的电子书,反正不用我说,如果是你丢了你的主目录你也会烦的对吧吧吧吧吧。(我桌面基本上就是我的根目录..)
在hackathon现场机智的我当即立断拨打了,说了一大堆情况之后让我打开发者服务热线,热线个毛,工作日才能打。
我就耐着性子等到了今天周一,我估计我是9点钟上班他们第一个接听的人,说了一大堆感觉开发者热线的客服也不大懂,引导我在官网上寻找答案,找了10分钟找到了个电话号码,槽这不就是我前天打的电话吗?然后我又打过去,描述了一大堆又让我打开发者...情况如下
&---- 我...
----------&
---& “上班再打”
&-----------
----------&
&-----------
----------&
---------&我.卒()
反正今天打了一上午的电话就对了。
没办法,找了几个数据恢复软件,找到的都是我有意删掉的文件,包括那个很昂贵的data drill……
于是用了个工具把整个硬盘导出来了...用十六进制编辑器能找到想要的一些数据……
我现在准备扔到室友的电脑上一起跑...徒手撸集群(2333这也是集群),大概就是这样了。
所以这就是标题所问的问题。抱歉心里还是很难受可能在阅读上给您带来困难了。
@机智的五花肉 够详细吧
另外,这里有导致出错的applescript,。
请不要鄙视我拙劣的英语,指出来就好。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
grep --byte-offset --only-matching --text pattern file
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
cat file | ruby -e 'x=readlines*"";puts x.scan(/PATTERN/m).reduce([[-1]*3]) { |a, w| a && [x.index(w, a[-1][0]+1), w.size, w]}[1..-1].map { |x| x*"," }*"\n"'
cat file | perl -le '$_ = $x = join "", &&; $i=-1;for(/PATTERN/gs){$i=index $x, $_, $i+1; print join ",", $i, length, $_}'
还是 Perl 代码短
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知

我要回帖

更多关于 grep 匹配完整字符串 的文章

 

随机推荐