我已经grep
编辑了日期字符串多行的日志文件:
2012-10-09 14:05:26
2012-10-09 14:11:18
2012-10-09 14:12:03
现在我想将它们转换为时间戳,并找出哪一个大于值
date cmd:
date -d "2012-10-09 14:37:59" +%s
我不确定如何使用多行,awk或其他shell cmd。
答案 0 :(得分:2)
这只是一个简单的例子,应该包括更好的解决方案 参数传递,错误返回测试等。
#!/bin/sh
SEARCH=`date -d "2012-10-09 14:11:09" +%s`
while read DATETIME ; do
THIS=`date -d "$DATETIME" +%s`
if [ "$SEARCH" -le "$THIS" ] ; then
echo $DATETIME
fi
done <<EOD
2012-10-09 14:05:26
2012-10-09 14:11:18
2012-10-09 14:12:03
EOD
答案 1 :(得分:1)
使用awk
:
awk -v d="2012-10-09 14:07:26" '
BEGIN {
FS = "[-: ]";
split( d, arr, /[-: ]/ );
date_timestamp = mktime( arr[1] " " arr[2] " " arr[3] " " arr[4] " " arr[5] " " arr[6] );
if ( date_timestamp == -1 ) {
printf "%s\n", "Bad format for input date";
exit 1;
}
}
{
if ( mktime( $1 " " $2 " " $3 " " $4 " " $5 " " $6 ) > date_timestamp ) {
print $0;
}
}
' infile
它产生:
2012-10-09 14:11:18
2012-10-09 14:12:03