在文件中,我有n
个纪元时间。
我必须将每个纪元时间转换为dd / mm / yy格式。
例如:file1 content:
1 aaa 1322625862.408
2 bbb 1322625848.954
3 ccc 1322625843.908
4 ddd 1322625865.436
现在我想转换这个纪元时间。
答案 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
希望它有所帮助