使用 GNU awk。目前尚不清楚您真正从哪些字段获取打印时间戳,因此这里有一些使用您的输入文件的示例:
仅使用 1 美元:
$ gawk '{s=mktime(gensub(/-/," ","g",$1" 0 0 0")); print s,s}' file
1352959200 1352959200
1352872800 1352872800
1352872800 1352872800
1352872800 1352872800
使用 $1 和 $2:
$ gawk '{s=mktime(gensub(/[-:]/," ","g",$1" "$2)); print s,s}' file
1352997300 1352997300
1352919780 1352919780
1352920380 1352920380
1352920980 1352920980
使用 $3 及以上:
$ gawk '{sub($1" "$2" ","");s=mktime($0); print s,s}' file
1352996520 1352996520
1352919780 1352919780
1352920380 1352920380
1352920980 1352920980
如果你没有傻瓜:
$ awk '{ ("date -d \" "$1" \" +%s") | getline s; print s,s}' file
1352959200 1352959200
1352872800 1352872800
1352872800 1352872800
1352872800 1352872800
编辑:更新到如何使用 system() (不推荐):
使用这个 shell 命令行:
$ printf "%s %s\n" $(date -d 2012/11/15 +%s) $(date -d 2012/11/15 +%s)
1352959200 1352959200
并从 awk 中的 system() 调用它:
$ awk '{system( "printf \"%s %s\n\" $(date -d " $1 " +%s) $(date -d " $1 " +%s)" )}' file
1352959200 1352959200
1352872800 1352872800
1352872800 1352872800
1352872800 1352872800