【发布时间】: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。确保不要以任何方式解释列,并且仅在导入时使用文本。