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

时间:2015-02-04 13:20:51

标签: linux date unix epoch

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

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

例如:file1 content:

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

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

3 个答案:

答案 0 :(得分:1)

您可以使用date

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

Pipeline walkthourgh:

$(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。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

它只是从文件中获取带有时间戳的相关列,并执行
date -d @ +“%d /%m /%y”

输出:

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

希望它有所帮助