bash 转换文件中的 unixtimestamp
bash Convert unixtimestamp in file
我想转换文件中的 unix 时间戳。我使用了一个 bash 脚本,它从互联网上加载了一个文件。
文件中的数据如下所示:
line 09 to Allstrom 1486568580 is ok
line 19 to rom 1486568450 is ok
如何将此 unixtimestamp 转换为人类日期?我知道我必须使用 date -ud timestamp
但我怎样才能在我的 bash 脚本中获取时间戳?
谢谢你帮助我
马库斯
您可以创建一个 Awk
以在 EPOCH
值上调用 date -d
,转换为所需的时间戳格式并打印该行的其余部分,
awk '{ cmd="date -d@"" +'%H:%M:%S'"; cmd | getline mydate; close(cmd); =mydate}1' file
line 09 to Allstrom 21:13:00 is ok
line 19 to rom 21:10:50 is ok
awk
中的 cmd | getline
语法允许您在 awk
变量 mydate
中捕获 date
的结果以便稍后打印。
(或)在包含 EPOCH
值的 column 5
上使用本机 gawk
函数 strftime
,
awk '{=strftime("%H:%M:%S", )} 1' file
line 09 to Allstrom 21:13:00 is ok
line 19 to rom 21:10:50 is ok
鉴于:
$ 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。
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
我想转换文件中的 unix 时间戳。我使用了一个 bash 脚本,它从互联网上加载了一个文件。 文件中的数据如下所示:
line 09 to Allstrom 1486568580 is ok
line 19 to rom 1486568450 is ok
如何将此 unixtimestamp 转换为人类日期?我知道我必须使用 date -ud timestamp
但我怎样才能在我的 bash 脚本中获取时间戳?
谢谢你帮助我
马库斯
您可以创建一个 Awk
以在 EPOCH
值上调用 date -d
,转换为所需的时间戳格式并打印该行的其余部分,
awk '{ cmd="date -d@"" +'%H:%M:%S'"; cmd | getline mydate; close(cmd); =mydate}1' file
line 09 to Allstrom 21:13:00 is ok
line 19 to rom 21:10:50 is ok
awk
中的 cmd | getline
语法允许您在 awk
变量 mydate
中捕获 date
的结果以便稍后打印。
(或)在包含 EPOCH
值的 column 5
上使用本机 gawk
函数 strftime
,
awk '{=strftime("%H:%M:%S", )} 1' file
line 09 to Allstrom 21:13:00 is ok
line 19 to rom 21:10:50 is ok
鉴于:
$ 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。
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