我试图使用以下命令查看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脚本运行!
答案 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之间的任何数字。