LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1944|回复: 17

请教grep!

[复制链接]
发表于 2008-5-5 14:53:07 | 显示全部楼层 |阅读模式
查找一个关键字 可以这样 grep "keyword1" *.txt

查找某个目录下 多个关键字时
grep "keyword1 keyword2 keyword3" *.txt
关键字之间用什么连接符呢? &是后台命令,有什么表示 "and并" 的?

多个关键字 不一定在同一行中!
发表于 2008-5-5 16:03:11 | 显示全部楼层
  1. $ egrep 'keyword1|keyword2|keyword3' *.txt
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 16:17:22 | 显示全部楼层
知道我为什么错了,原来我用
grep "keyword1*keyword2*keyword3" *.txt
少了个.号
grep "keyword1.*keyword2.*keyword3" *.txt


现在貌似可以了!
回复 支持 反对

使用道具 举报

发表于 2008-5-5 17:03:24 | 显示全部楼层
Post by moonjava;1845999
知道我为什么错了,原来我用
grep "keyword1*keyword2*keyword3" *.txt
少了个.号
grep "keyword1.*keyword2.*keyword3" *.txt


现在貌似可以了!



呵呵罗唆一句也许会有些帮助。
grep查找的表达式是正则表达式,如果写成keyword1*keyword2*keyword3这样子,*的意思是表示它前面的字符重复0次或多次,可以匹配keyword1keyword2keyword3或者keyword111keyword222keyword333这样的字符串
而如果写成keyword1.*keyword2.*keyword3这样子,.*的意思是表示匹配任意的字符,可以匹配keyword1aaakeyword2bbbkeyword3ccc或者keyword1keyword2keyword3这样的字符串。
回复 支持 反对

使用道具 举报

发表于 2008-5-5 17:24:58 | 显示全部楼层
Post by moonjava;1845999
知道我为什么错了,原来我用
grep "keyword1*keyword2*keyword3" *.txt
少了个.号
grep "keyword1.*keyword2.*keyword3" *.txt


现在貌似可以了!
可以了吗?你是怎么满足“多个关键字不一定在同一行中”的?grep是面向行的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 18:11:07 | 显示全部楼层
Post by skycleaner;1846012
呵呵罗唆一句也许会有些帮助。
grep查找的表达式是正则表达式,如果写成keyword1*keyword2*keyword3这样子,*的意思是表示它前面的字符重复0次或多次,可以匹配keyword1keyword2keyword3或者keyword111keyword222keyword333这样的字符串
而如果写成keyword1.*keyword2.*keyword3这样子,.*的意思是表示匹配任意的字符,可以匹配keyword1aaakeyword2bbbkeyword3ccc或者keyword1keyword2keyword3这样的字符串。


对对对,你说得太对了,看书的时候,理解不深入!你现在一说,印象加深了!

只是 命令行中 grep  str *.txt
这个只要一个*就模糊匹配了,混了,呵呵!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 18:13:52 | 显示全部楼层
Post by Jockey;1846022
可以了吗?你是怎么满足“多个关键字不一定在同一行中”的?grep是面向行的。


这个还没有,同一行的可以了,只是 多行中时,我加\n好像不起效果!

grep 'keyword1.*[\n]*keyword2*' *.txt
回复 支持 反对

使用道具 举报

发表于 2008-5-5 19:24:24 | 显示全部楼层
我说过了,grep是面向行的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-5 21:25:02 | 显示全部楼层
Post by Jockey;1846059
我说过了,grep是面向行的。


那就没法子了?
回复 支持 反对

使用道具 举报

发表于 2008-5-5 23:50:57 | 显示全部楼层
不明白楼主的目的
如果只是想确认这几个关键字出现在文件中
将所有行连接成一行再grep即可
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表