如何使用shell脚本在文本文件中查找第一个大于或等于特定日期的日期

如何使用shell脚本在文本文件中查找第一个大于或等于特定日期的日期,shell,Shell,/*在这里,我试图找到大于或等于“2013-11-14”的日期的第一次出现,上面的代码我已经尝试过了,它只给出了文件的特定行,如果找不到该日期,它必须使用awk给出下一个大于2013-11-14的日期*/ past_date='2013-11-14' initial_time=$(grep -o -m1 "$past_date [0-9][0-9]:[0-9][0-9]:[0-9][0-9]" logfile.txt) 如果使用bash,则可能需要尝试以下操作: past_date='201

/*在这里,我试图找到大于或等于“2013-11-14”的日期的第一次出现,上面的代码我已经尝试过了,它只给出了文件的特定行,如果找不到该日期,它必须使用awk给出下一个大于2013-11-14的日期*/

past_date='2013-11-14'
initial_time=$(grep -o -m1  "$past_date [0-9][0-9]:[0-9][0-9]:[0-9][0-9]" logfile.txt)

如果使用bash,则可能需要尝试以下操作:

past_date='20131114'
awk '{d=$1;gsub(/-/,"",d);if (d>=p) {print;exit}}' p=$past_date logfile

2013-11-15 15:45:40 Starting agent install process
过去日期='2013-11-14'
初始时间=$(grep-oP'\d{4}-\d\d-\d\d\d:\d\d:\d\d'“$pass_date”],则执行;然后回显$LINE;中断;fi;完成)
读取行时
做
初始时间=`echo$line | sed-e's/\([0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9]\)./\1/'`
文件内容日期=`date-d“$initial\u time”+%Y%m%d`
比较过去日期=`date-d“$pass\u date”+%Y%m%d`
如果[$comparison\u pass\u date-le$file\u content\u date];然后
比较开始日期=`date-d“$file\u content\u date”+%Y%m%d`
打破
fi
完成
第一行的反引号是打字错误吗?你的发行版和版本对一个好答案很重要。请提供有关您的系统的更多信息。以下是logfile.txt 2013-09-16 15:45:14的数据:TomAgent 2.8 r5896正在启动。。。2013-09-16 15:45:14启动代理安装过程2013-11-13 15:45:40 TomAgent 2.8 r5896启动。。。2013-11-15 15:45:40启动剂安装流程2013-11-16 12:35:23 TomAgent 2.8 r5896启动。。。2013-11-17 12:35:23启动剂安装流程2013-09-17 12:41:32 TomAgent 2.8 r5896启动。。。2013-09-17 12:41:32检测到操作后台程序。
past_date='2013-11-14'
initial_time=$(grep -oP '\d{4}-\d\d-\d\d \d\d:\d\d:\d\d' < logfile.txt | \
while read LINE ; do if [ "$LINE" '>' "$past_date" ]; then echo $LINE; break; fi ; done)
while read line
do
initial_time=`echo $line | sed -e 's/\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]\).*/\1/'`
file_content_date=`date -d "$initial_time" +%Y%m%d`
comparison_past_date=`date -d "$past_date" +%Y%m%d`
if [ $comparison_past_date -le $file_content_date ]; then
comparison_start_date=`date -d "$file_content_date" +%Y%m%d`
break
 fi
done < logfile.txt
fi