GREP 查找带通配符的多个字符串

GREP 查找带通配符的多个字符串

我正在尝试从某些天的日志文件中复制行。

这是它们的外观的一个例子。

2014-05-01T15:53:16+00:00 DEBUG (7): 

2014-04-301T11:08:10+00:00 DEBUG (7):

此 GREP 命令有效,但仅适用于精确的字符串:

grep -w '2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\|2014-04-26\|2014-04-25\|2014-04-24\|2014-04-23\|2014-04-22\|2014-04-21\|2014-04-202014-04-19' /test_custom.log > new_file.log

当我尝试添加通配符时,它不起作用。我还尝试了其他几种方法,结果相同。

grep -w '2014-04-30*\|2014-04-29*\|2014-04-28*\|2014-04-27*\|2014-04-26*\|2014-04-25*\|2014-04-24*\|2014-04-23*\|2014-04-22*\|2014-04-21*\|2014-04-20*' /test_custom.log > new_file.log

有什么建议么?

答案1

*在正则表达式中的含义与在文件名通配符中的含义不同。*意味着重复前面的事情零次或多次。要表示“任何内容”,您必须使用.*,其中.代表“任何字符”。

此外,如果您想要所有以日期开头的行,请删除-w并添加^以匹配行的开头:

grep '^\(2014-04-30\|2014-04-29\|2014-04-28\|2014-04-27\)'

日期用括号括起来,因此您不必^每次都重复。

相关内容