Chinaunix

标题: 请问使用grep命令怎么过滤多个条件? [打印本页]

作者: joe9i0    时间: 2011-03-24 10:49
标题: 请问使用grep命令怎么过滤多个条件?
假设一个文件内容如下:

x.txt

  1. aaaaaaaaaaa
  2. bbbbbbbbbbb
  3. cccccccccccccc
  4. ddddddddddd
  5. eeeeeeeeeee
  6. ffffffffffffffffffffff
  7. ggggggggggg
复制代码
请问使用grep命令怎么同时过滤出含有a,d,f这样的内容.
等到如下结果:
aaaaaaaaaaa
ddddddddddd
ffffffffffffffffffffff
作者: licong_jay    时间: 2011-03-24 10:51
egrep 'a|d|f' x.txt
作者: joe9i0    时间: 2011-03-24 10:51

在SUSE10和Solaris下使用的grep是否需要改变?
还有如果要在windows中使用批处理得到同样的结果,该怎么弄呢?
我用windows的find命令始终得不到满意的结果.
作者: joe9i0    时间: 2011-03-24 10:54
egrep 'a|d|f' x.txt
licong_jay 发表于 2011-03-24 10:51



    谢谢, 我前面一直用的双引号...
grep "a|d|f" x.txt
这样怎么就不行呢....
grep和egrep有什么区别呢?
在solaris下面有egrep可用吗?
作者: licong_jay    时间: 2011-03-24 10:59
谢谢, 我前面一直用的双引号...
grep "a|d|f" x.txt
这样怎么就不行呢....
grep和egrep有什么 ...
joe9i0 发表于 2011-03-24 10:54



    双引号还是单引号,在此例中没有区别,他们的作用都是屏蔽符号|在shell中的管道作用。

egrep = grep -E,  使用扩展正则的grep。 这是grep "a|d|f" x.txt 失败的根本原因。grep不识别|
作者: joe9i0    时间: 2011-03-24 11:03
回复 5# licong_jay


    原来这样啊,难怪我怎么换正则表达式都没用.
这下了解啦,真是非常感谢!


不知道这里有谁对dos命令有研究的, 在windows的批处理中如何实现相同的功能.
我使用find命令不支持正则表达式,这个就比较郁闷了.

  1. D:\>find 'a|d|f' x.txt
  2. FIND: 参数格式不正确
  3. 'd' 不是内部或外部命令,也不是可运行的程序
  4. 或批处理文件。
复制代码

作者: ziyunfei    时间: 2011-03-24 11:06
grep "a\|d\|f" x.txt
findstr "a d f" x.txt
作者: joe9i0    时间: 2011-03-24 12:05
grep "a\|d\|f" x.txt
findstr "a d f" x.txt
ziyunfei 发表于 2011-03-24 11:06



    {:3_187:} 对阁下的敬仰犹如滔滔江水,延绵不绝.又如黄河泛滥,一发而不可收拾...




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2