Grep中的Unix正则表达式

时间:2013-12-09 16:48:35

标签: unix grep expression output

我有一些名为

的名单
20131101_klm
20131101_abc
20131102_klm
20131102_abc
.
.

第一个数字是时间戳,如20131101_klm是01.11.2013中的klm列表,因此每天为abc。

这些列表有一些像

这样的行
abcd
efgh
jk4m
23rf

我想仅在 klm列表 中使用“grep”命令在 2013年11月11日至2013年11月16日之间进行搜索。

(列表采用txt.gz格式) 我正在写

zegrep -a -E '*abcd*|*defgh*' 201311[09,10,11,12,13,14,15,16]*_klm 

但它给了我所有的11月数据,如20131101 - 20131102所以有些数据来自20131109和20131116之间。为什么它不仅仅是在09-16之间给出?

1 个答案:

答案 0 :(得分:3)

这实际上是一个shell问题,而不是grep问题。

zgrep -a -E '*abcd*|*defgh*' 201311{09,10,11,12,13,14,15,16}*_klm

这适用于大多数当前的shell(mksh,AT& T ksh,csh,tcsh,zsh,GNU bash)。

有些shell也支持正则表达式,但通常不支持POSIX ERE。