我想在文件中转换unixtimestamp。我使用了一个bash脚本,它从Internet上加载一个文件。 文件中的数据如下所示:
line 09 to Allstrom 1486568580 is ok
line 19 to rom 1486568450 is ok
如何将此unixtimestamp转换为人类日期?我知道我必须使用date -ud timestamp
但是如何在我的bash脚本中获取时间戳?
感谢帮助我
Markus
答案 0 :(得分:2)
假设:
$ cat file
line 09 to Allstrom 1486568580 is ok
line 19 to rom 1486568450 is ok
你可以完全按照gawk
这样做:
$ awk '{$(NF-2)=strftime("%Y-%m-%d %H:%M:%S", $(NF-2))} 1' file
line 09 to Allstrom 2017-02-08 07:43:00 is ok
line 19 to rom 2017-02-08 07:40:50 is ok
这只是gawk
,而不是POSIX awk。
答案 1 :(得分:1)
您可以Awk
拨打date -d
上的EPOCH
,转换为所需的时间戳格式并打印其余部分,
awk '{ cmd="date -d@"$5" +'%H:%M:%S'"; cmd | getline mydate; close(cmd); $5=mydate}1' file
line 09 to Allstrom 21:13:00 is ok
line 19 to rom 21:10:50 is ok
cmd | getline
中的awk
语法允许您在date
变量awk
中捕获mydate
的结果,以便稍后打印。
(或)使用包含gawk
值的strftime
上的原生column 5
函数EPOCH
,
awk '{$5=strftime("%H:%M:%S", $5)} 1' file
line 09 to Allstrom 21:13:00 is ok
line 19 to rom 21:10:50 is ok
答案 2 :(得分:1)
Perl
当地时间
perl -le ' print scalar localtime(1486568580)'
Wed Feb 8 19:13:00 2017
或GMTime
perl -le ' print scalar gmtime(1486568580)'
Wed Feb 8 15:43:00 2017
如果您想作为文件
perl -a -le ' print "@F[0,1,2,3] ", scalar localtime($F[4]), " @F[5,6]"' file
输出
line 09 to Allstrom Wed Feb 8 19:13:00 2017 is ok
line 19 to rom Wed Feb 8 19:10:50 2017 is ok