在文件中将纪元时间转换为 dd/mm/yy

convert epoch time into dd/mm/yy in a file

在一个文件中我有 n 个纪元时间。

我必须将每个纪元时间转换为 dd/mm/yy 格式。

例如:file1 内容:

1 aaa 1322625862.408 
2 bbb 1322625848.954
3 ccc 1322625843.908
4 ddd 1322625865.436

现在我想转换这个纪元时间。

你可以使用 date:

reut@EliteBook-8470p:~/$ for epoch in $(cat f.txt | cut -d' ' -f 3); do date -d @$epoch +%d/%m/%y; done

流水线演练:

$(cat f.txt | cut -d' ' -f 3) 将被 ' ' 分割的每行中的每个第 3 列作为分隔符。这是您拥有的纪元字符串。

现在使用其中的每一个(使用 for 循环)作为 date -d @<eopch> 的参数并将格式设置为 %d/%m/%y.

输出:

30/11/11
30/11/11
30/11/11
30/11/11

编辑: 要将其实际存储在结果文件中:

while read serial name tdate; do echo ${serial} ${name} $(date -d@"${tdate}" "+%d/%m/%y") >> result_file; done < your_file.txt

现在你的输出在结果文件中。

result_file中的输出:

1 aaa 30/11/11
2 bbb 30/11/11
3 ccc 30/11/11
4 ddd 30/11/11

感谢@fedorqui。

您没有指定,但我相信您需要 Linux 命令。 如果你想从文件中解析它,只需执行:

for i in `awk '{print }' kuku `; do
date -d @$i +"%d/%m/%y"
done

它只是从文件中取出带有时间戳的相关列,然后执行
日期-d @ +"%d/%m/%y"

输出:

30/11/11
30/11/11
30/11/11
30/11/11

希望对您有所帮助

使用带有虚拟参数的 read 并只获取您想要的参数会更容易:

while read _ _ epoch
do
   date -d@"$epoch" "+%d/%m/%y"
done < file

这样,每行的第三个单词就被存储到$epoch中。然后,您使用 date -d@XXX 将纪元转换为普通时间戳。请记住,您可以使用 "+%Y%m..." 之类的设置格式。

测试

$ while read _ _ epoch; do date -d@$epoch "+%d/%m/%y"; done < a
30/11/11
30/11/11
30/11/11
30/11/11