在文件中将纪元时间转换为 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
在一个文件中我有 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