如何删除充满 csv 文件的文件夹中没有特定标题的所有列?

Posted

技术标签:

【中文标题】如何删除充满 csv 文件的文件夹中没有特定标题的所有列?【英文标题】:How can I delete all the columns without a certain header inside a folder full of csv files? 【发布时间】:2021-10-14 03:28:39 【问题描述】:

我有一个文件夹,里面有很多 .csv 文件。我需要删除这些 CSV 文件中没有特定标题的所有列。换句话说,我只需要保留具有某些标题的列,并删除该文件夹内所有 CSV 文件中的其余列。

例如,我只需要在文件夹内的所有 CSV 文件中保留标题为“名称”、“作业 1”、“作业 2”和“期末成绩”的列。

想知道如何使用 Bash 正则表达式、awk、sed 或任何其他方式来做到这一点?

非常感谢您的帮助。

干杯

【问题讨论】:

edit 显示minimal reproducible example 的问题,包括简洁、可测试的样本输入、预期输出以及您自己解决问题的尝试,以便我们为您提供帮助(此站点的存在是为了帮助人们解决问题代码,而不是为人们编写代码)。如果不清楚,请参阅How to Ask。作为开始 - awk 将是正确的工具,请参阅***.com/a/68578793/1745001 顶部的第一个脚本,了解如何通过名称引用列。 尝试自己编写一些东西,如果不起作用,请具体向我们展示您所做的事情,以便我们为您提供帮助。您启动它,然后我们提供帮助。我们不是为你写的。向我们展示您尝试过的实际代码,然后描述发生的事情和不正确的事情,然后我们可以从那里帮助您。如果您先自己尝试一下,您可能会非常接近答案。 csvtool namedcol 尝试使用cut等linux文件工具。我想你可以想出一个 bash 脚本来做你想做的事。我建议备份您的文件。或者将文件加载到您选择的电子表格软件中,根据需要删除列,然后再次导出为 CSV。确保不要以任何方式解释列,并且仅在导入时使用文本。 【参考方案1】:

你可以使用这个,但如果存在空格是单列标题名称,则需要使用'\'

csvtool namedcol Name,Assignment\ 1,Assignment\ 2,Final\ grade file.csv

【讨论】:

以上是关于如何删除充满 csv 文件的文件夹中没有特定标题的所有列?的主要内容,如果未能解决你的问题,请参考以下文章

读入火花数据框时如何从csv文件中删除列

用于从 CSV 中删除带有特定单词的行的批处理文件

批量删除不包括特定文件夹下的文件(或具有特定模式/通配符的文件名,例如 Test123.csv、Test623.csv、Test854.csv)

使用条件从 CSV 文件中删除一行

从充满 CSV 文件的 AWS S3 目录中复制 Redshift

更新 CSV 文件以删除第一个数字并在特定列中插入小数位