我有一些名为
的名单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之间给出?
答案 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。