0

我有一个file.txt格式为 with 的行HH:MM:SS

00:05:50
01:40:10
00:23:09
00:34:02

我想打印出显示时间在 30 分钟和 1 小时 20 分钟之间的行。

这是我的尝试:

LINES=`grep '(00:[3-5][0-9]:[0-5][0-9]|01:[01][0-9]:[0-5][0-9]|01:20:00)' file.txt`
echo "$LINES"

然而,这并没有显示任何结果。我究竟做错了什么?

谢谢!

4

3 回答 3

2

另一种选择,使用awk

LINES=`awk '{ if ( $0 >= "00:30:00" && $0 <= "01:20:00") print $0 }' file.txt`

这是因为 24 小时固定格式的时间也遵循 ASCII 的词汇顺序。

或者更短,正如@Kent 慷慨建议的那样:

LINES=`awk '$0 >= "00:30:00" && $0 <= "01:20:00"' file.txt`
于 2013-09-29T22:41:22.180 回答
0

尝试以下

   LINES=`egrep  '(00:[3-5][0-9]:[0-5][0-9])|(01:[01][0-9]:[0-5][0-9]|01:20:00)' file.txt`
于 2013-09-29T22:23:48.587 回答
0

另一个选项。将文件内容转换为分钟,并与以分钟为单位提供的边界逐行比较

awk -F: -v ll=30 -v ul=80 '{minutes=60*$1 + $2 + $3/60}; 
     minutes >= ll && minutes <= ul' file.txt
于 2013-09-29T23:04:43.647 回答