【问题标题】:Remove duplicate lines on two columns on a .csv [closed]删除 .csv 上两列上的重复行 [关闭]
【发布时间】:2019-05-04 03:57:52
【问题描述】:

我想通过 bash 查找 csv 文件中的重复项,并使用管道作为字段分隔符。

举个例子:

输入:

W14|E75  
Z20|K60  
R59|R59  
K60|O74  
A08|M10  

预期输出:

Z20|K60  
R59|R59  
K60|O74  

其他预期输出:

Z20|K60  
R59|R59  

我的意思是当表达式已经存在于第一列时,只需保留它,与第二列相同,否则我可以接受只保留第一行。

我尝试的是:

awk -F "|" 'FNR==NR { x[$1,$2]++; next } x[$1,$2] > 1' file.csv file.csv

我考虑使用 grep,但我不确定该怎么做。

抱歉英语不好,提前谢谢你

【问题讨论】:

  • “表达”和“保留它”是什么意思?为了让您的问题更清楚,请首先仅描述您的理想解决方案是什么样的,然后单独描述您愿意做出的妥协。像现在这样,太混乱了。
  • 是的 - W14 或 E75 有什么重复的地方?
  • 完全不清楚您的示例中的“重复”是什么意思。请澄清!

标签: bash csv awk grep


【解决方案1】:

我认为根据输出,您需要非唯一条目,无论它们在行中的位置如何

$ awk -F'|' 'NR==FNR{a[$1]++;a[$2]++;next} a[$1]*a[$2]>1' file{,}

应该给你你的第一个输出。

【讨论】:

  • 这是一些深刻的理解,先生。 :thethumbupemojioracouple:
猜你喜欢
  • 2014-04-07
  • 2011-07-20
  • 2017-10-22
  • 2017-07-06
  • 2011-10-10
  • 1970-01-01
  • 2014-10-07
  • 2015-12-28
  • 2020-10-10
相关资源
最近更新 更多