我的file.txt
行的格式为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"
然而,这显示没有结果。我做错了什么?
谢谢!
答案 0 :(得分: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`
答案 1 :(得分: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`
答案 2 :(得分:0)
另一个awk选项。将文件内容转换为分钟,并逐行比较以分钟为单位提供的界限
awk -F: -v ll=30 -v ul=80 '{minutes=60*$1 + $2 + $3/60};
minutes >= ll && minutes <= ul' file.txt