gpt4 book ai didi

linux - 将文件名作为列添加到 csv 文件中

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:55 26 4
gpt4 key购买 nike

我有一长串用于数据挖掘的 csv 文件(每天都有新文件)。每个文件名都包含文件的创建日期。我需要从文件名中解析日期并将其作为新列添加到文件中的每一行(更改标题行也很好)。

所以如果我有一个名为 cx3-2016-04-01.csv 的文件,其中包含以下内容:

country,os,os_ver,oem,model
CN,A,6.0,Xiaomi,MI NOTE
US,A,6.0,LGE,LGLS7700
CN,A,6.0,Xiaomi,MI 4LTE
US,A,6.0,LGE,LGUS991
US,A,6.0,LGE,LGUS991

我希望输出看起来像:

date,country,os,os_ver,oem,model
2016-04-01,CN,A,6.0,Xiaomi,MI NOTE
2016-04-01,US,A,6.0,LGE,LGLS7700
2016-04-01,CN,A,6.0,Xiaomi,MI 4LTE
2016-04-01,US,A,6.0,LGE,LGUS991
2016-04-01,US,A,6.0,LGE,LGUS991

我能否以及如何在单个命令或命令链中使用标准 linux 命令行工具(但不使用脚本)来做到这一点?

最佳答案

试试这个 awk

在存储文件的路径上运行此命令,或者提供带有路径的文件名。在下面,我只是在最后给出了文件名 (cx3-2016-04-01.csv)。

awk ' { x=1 ; if ( x == NR ) { 打印“日期、国家、操作系统、os_ver、oem、型号”} else { gsub(“cx3-”、“”、FILENAME); gsub(".csv","",FILENAME);打印文件名","$0 } } ' cx3-2016-04-01.csv

工作原理

  1. 标题的第一行是硬编码的(date,country,os,os_ver,oem,model)

  2. 对于每隔一行,文件名的“cx3-”和“.csv”被删除并添加到带有 ,(逗号)的行首。

这是上述命令产生的输出。
日期、国家、操作系统、操作系统版本、OEM、型号
2016-04-01,CN,A,6.0,小米,MI NOTE
2016-04-01,美国,A,6.0,LGE,LGLS7700
2016-04-01,CN,A,6.0,小米,小米4LTE
2016-04-01,美国,A,6.0,LGE,LGUS991
2016-04-01,美国,A,6.0,LGE,LGUS991

关于linux - 将文件名作为列添加到 csv 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com