LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: moonjava

请教grep!

[复制链接]
 楼主| 发表于 2008-5-6 08:49:32 | 显示全部楼层
Post by huan;1846181
不明白楼主的目的
如果只是想确认这几个关键字出现在文件中
将所有行连接成一行再grep即可


也是啊,一种方法!
回复 支持 反对

使用道具 举报

发表于 2008-5-6 09:33:03 | 显示全部楼层
用分次筛选如何
  1. grep -l 'key3' $( grep -l 'key2' $( grep -Rl 'key1' *) )
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 10:22:40 | 显示全部楼层
Post by remote fish;1846234
用分次筛选如何

  1. grep -l 'key3' $( grep -l 'key2' $( grep -Rl 'key1' *) )
复制代码


学习了,不过这个$符是起什么作用的?
回复 支持 反对

使用道具 举报

发表于 2008-5-6 12:03:14 | 显示全部楼层
bash 中 $( xxx ) 和 `xxx` 是等效的, 不过个人感觉前者可读性好一些

我那种方法的效率不见得比先合并行再处理的方法更高, 仅仅是提供一种思路. 楼主要是有兴趣不妨比较一下各种方法的执行效率
回复 支持 反对

使用道具 举报

发表于 2008-5-6 12:19:22 | 显示全部楼层
想确认一下,是不是严谨说的话,$()与``不完全等效吧,比如前面那个echo `echo \\\\\\\n`
回复 支持 反对

使用道具 举报

发表于 2008-5-6 13:16:51 | 显示全部楼层
for file in *.txt
do
        awk '/keyword1/{i++}/keyword2/{j++}/keyword3/{k++}END{if(i*j*k>0) print FILENAME}' $file
done
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-6 14:41:47 | 显示全部楼层
Post by ly5066113;1846324
for file in *.txt
do
        awk '/keyword1/{i++}/keyword2/{j++}/keyword3/{k++}END{if(i*j*k>0) print FILENAME}' $file
done


不错啊,不用面向行的grep
回复 支持 反对

使用道具 举报

发表于 2008-5-6 15:35:04 | 显示全部楼层
Post by skycleaner;1846303
想确认一下,是不是严谨说的话,$()与``不完全等效吧,比如前面那个echo `echo \\\\\\\n`


严谨地说的话我就不清楚了, 去查手册吧. 我对 sh 的掌握仅仅是能用的程度, 远远达不到理解
回复 支持 反对

使用道具 举报

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

本版积分规则

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