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

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

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

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

非常感谢您的帮助。

干杯

【问题讨论】:

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

标签: linux csv awk sed


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 2019-01-03
    相关资源
    最近更新 更多