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

Bash 如何使用grep命令显示两次之间的数据,bash,awk,grep,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脚本运行 为了实现使用grep(更具体地说,是extended regexp选项)的目的,您需要提供一个正则表达式。正则表达式有一定的局限性,但我针对这个

我正在尝试使用以下命令查看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脚本运行

为了实现使用grep(更具体地说,是extended 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之间的任何内容


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

你怎么会认为
awk
不能从bash脚本运行?文件是按日期排序还是按随机行排序?您能给出示例输入和所需输出吗?@RJHunter,因为我试图从bash脚本运行它,但它没有运行,而且我对
awk
不是很熟悉。此文件条目看起来像
月日时间(小时):分钟“
。输出只需要在所需时间之间显示。
awk
在很多情况下都是一个很长的时间标准!这是有效的,你能解释一下语法吗,这样我就知道它是如何工作的了?我已经编辑了答案,包括一个快速的解释。我可以推荐您在11月9日至15日(即[0-3][0-9]|[4][0-5])阅读一下吗?