【发布时间】:2014-10-13 03:15:41
【问题描述】:
我将合并多个 CSV 文件。我想做的是:
1) 从文件中删除重复的行,但是,我需要检查多个列作为重复项的标准。我该怎么做?
2) 然后创建第二个输出文件以查看删除的内容会很好,以防某些不应该删除的内容被删除。
3) 创建一个项目列表作为输入文件运行(如果该行在该特定列中包含该单词,则删除整行。
如果有人可以帮助我执行此操作的命令,那就太好了!如果我需要澄清,请告诉我。
这是数据的样例(这里是建议的示例):
我有一个这样的 csv 文件:
column1 column2
john kerry
adam stephenson
ashley hudson
john kerry
etc..
我想从此文件中删除重复项,只为 1 处的问题获取:
column1 column2
john kerry
adam stephenson
ashley hudson
对于问题 3,我想采用第二个列表...意思是第一个列表的输出并进一步擦洗。我想要一个像 input.txt 这样的文件,其中包含:
adam
那么,最终的输出将是:
column1 column2
john kerry
ashley hudson
因此,示例中的 input.txt 文件包含单词 adam(这样我可以制作一长串单词以在 input.txt 文件中检查)。对于#3,我需要一个代码片段,它将检查 CSV 的所有行的第 1 列中的所有单词输入文件,然后从 csv 中删除任何匹配项。
【问题讨论】:
-
Perl 和 awk 非常适合这种工作。如果您提供示例输入文件并展示您已经尝试过的内容,您可能会得到更好的答案。
-
刚刚添加。我对 Perl 或 Awk 一无所知,但我知道 Bash。我希望有人能给我 Bash 命令。
-
只是为了确保:您检查 some 列是否相等,这意味着 some 列可能不同但仍被视为相等(换句话说:
uniq不起作用)? -
我同意 tkocmathla... 您可能希望使用比 bash 更适合此类工作的东西来执行此操作。我想将 python 添加到列表中。
-
我会将您的 csv 文件放入 sqlite 数据库或其他东西中。如果您尝试基于某些列组合来比较相等性,您会发现在 bash 中这非常困难。