bash - 将 csv 文件中的第一列从时间戳转换为年月格式

标签 bash awk sed

尝试将 csv 文件中的第一列从 unix 时间戳转换为日期(年月格式)

尝试了date -d @number'+%Y-%m'awk,但是awk在使用时无法识别@在一起

从 csv 文件中提取:

 1556113878,60662402644292
 1554090396,59547403093308

预期的 O/p

2019-04,60662402644292
2019-03,59547403093308

最佳答案

如果您有 GNU awk(有时称为 gawk),请尝试:

gawk -F,  '{print strftime("%Y-%m", $1),$2}' OFS=, file.csv

例如,考虑这个输入文件:

$ cat file.csv
1556113878,60662402644292
1554090396,59547403093308

我们的命令产生这个输出:

$ gawk -F,  '{print strftime("%Y-%m", $1),$2}' OFS=, file.csv
2019-04,60662402644292
2019-03,59547403093308

在许多 Linux 系统上,GNU awk 是默认设置。在 Ubuntu 等其他系统上,它不是,但可以轻松安装:sudo apt-get install gawk。在 MacOS 上,可以通过自制软件安装 GNU awk。

关于bash - 将 csv 文件中的第一列从时间戳转换为年月格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55857339/

相关文章:

bash - bash中的多个/划分列

linux - 在新行上打印 awk 结果

perl - 如何在 sed 中包含 perl 命令?

linux - 是否可以覆盖您正在处理的文件?

windows - Perl:与 Unix 相比,Windows 中的奇怪 Tie::File 行为

Python 将命令及其输出写入文件

linux - 练习 : download queue in bash

linux - 仅当包含在 ""之间时,如何才能替换 CSV 中的逗号字符

bash - 比较两个文件并输出带标记的文件

shell - 我正在尝试使用变量替换特定行号中的字符串