如何使用grep命令在两次之间显示数据

时间:2016-11-09 21:49:53

标签: bash awk grep

我试图使用以下命令查看11月9日15:00到15:45之间输入的所有条目:

grep -E "Nov  9 15:00|Nov  9 15:45" /mac1/user1log

但这不是从15:00到15:45显示,而是仅在15:00和15:45显示

我知道awk更好,但我需要从bash脚本运行它,awk无法从bash脚本运行!

1 个答案:

答案 0 :(得分:0)

为了实现您尝试使用grep(更具体地说,扩展-regexp选项),您需要提供正则表达式。正则表达式有些限制,但我想出了一个简单的答案来解决这个特定情况。

bash>grep -E "Nov  9 15:[0123][0-9]|Nov  9 15:[4][0-5]" testFile

testFile的内容如下:

Nov  9 15:02
Nov  9 15:01
Nov  9 15:09
Nov  9 15:39
Nov  9 15:49
Nov  9 15:59

但是这应该适用于你提出的场景。

bash>grep -E "Nov  9 15:[0123][0-9]|Nov  9 15:[4][0-5]" testFile
Nov  9 15:02
Nov  9 15:01
Nov  9 15:09
Nov  9 15:39

表达的第一部分与11月9日15:00至15:39的任何内容相匹配,第二部分与11月9日15:40至15:45的任何内容相匹配。

编辑:它的语法部分只是标准的正则表达式数值范围。 [0-9]意味着它将匹配包含0,1,2或3的任何内容,然后是0-9(01,02,03,39等)中的任何其他数字,而[4] [0-5] ]匹配4,然后是0到5之间的任何数字。