我想看到使用下面的命令至15:00之间所有条目进入到15:45 11月9日以显示两个时间之间的数据:如何使用grep命令
grep -E "Nov 9 15:00|Nov 9 15:45" /mac1/user1log
但是这并不表明15:00至15:45,但只有15:00和15:45
我知道awk
是更好的,但我需要运行这个从bash脚本和awk
不能从bash脚本运行!
我想看到使用下面的命令至15:00之间所有条目进入到15:45 11月9日以显示两个时间之间的数据:如何使用grep命令
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(更具体地说,扩展正则表达式选项),你需要提供一个正则表达式。正则表达式有一定的局限性,但对于这种特定的场景,我想出了一个简单的答案。
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之间的任何数字。
非常感谢!语法,所以我知道它是如何工作的? –
我已经编辑了包含快速解释的答案。我可以推荐阅读http://www.regular-expressions.info/quickstart.html? –
可以简化为'grep -E'Nov 9 15:([0-3] [0-9] | [4] [0-5])'' – Sundeep
是什么让你觉得'awk'不能从bash脚本运行? – RJHunter
该文件是按日期排序还是随机排列的?你可以给例子输入和期望的输出? – dawg
@RJHunter,因为我试图从bash脚本运行它,但它没有运行,我对'awk'不是很熟悉。 –