首页 > 解决方案 > 从 bash 写入时,日期/时间在 csv 中不正确

问题描述

我正在将逗号(,)分隔的数据从 .txt 文件写入 bash 中的 .csv。

执行此操作的 bash 代码的一部分。

   <path to file>/textfile.txt > <path to file>/csvfile.csv

除具有日期/时间的数据外,所有数据都正确写入 csv 文件。

给定文本文件中的输入:

07/01/2021 00:22:21.948,LC firm
07/01/2021 00:31:01.975,5800

书面 CSV 文件:

CSV 屏幕截图

如果我们单击单元格并查看编辑栏,则写入的日期/时间显示得有点正确,但默认情况下它在单元格中的显示方式不同。我不想要单元格或公式栏中的值。

我希望它在写入 csv 时采用以下格式。

07/01/2021 00:22:21.948 - with milliseconds

or

7/1/2021 12:22:21.948 AM - with milliseconds

任何帮助将不胜感激。

标签: excelbashshellcsv

解决方案


使用 awk:

awk -F, '{ hr=substr($0,12,2);if (hr<=12) { ampm="AM" } else { ampm="PM" };$1=$1" "ampm" - With Miliseconds";OFS="," }1' txtfile.txt > csvfile.csv

将逗号设置为字段分隔符,然后使用 substr 从行中提取小时。检查 hr 变量以发现它是否在 12 或之前,如果是,则将变量 ampm 设置为 AM,否则 ampm 为 PM。相应地修改第一个字段并打印行。

输出:

07/01/2021 00:22:21.948 AM - With Miliseconds,LC firm
07/01/2021 00:31:01.975 AM - With Miliseconds,5800

推荐阅读