查找多个CSV文件之间的匹配项

时间:2016-11-28 13:53:28

标签: csv awk

我在一个文件夹中有一个不确定数量的csv文件。所有CSV只有一列具有不同的行数,如下所示:

File1.csv

rs1000
rs2000
rs4000
rs5000
...

我想比较该文件夹中的所有CSV文件,并输出一个CSV文件,其中只包含所有文件中共有的行。 我有这个命令:

awk -F'|' 'NR==FNR{c[$1$2]++;next};c[$1$2] > 0' *.csv > out_p.csv

但它显示的行不在所有文件中。

2 个答案:

答案 0 :(得分:1)

我没有测试,但它应该可以工作。

*.csv
  • 单行将所有行读入哈希表(awk数组)
  • 每次递增值(出现次数)
  • 最后打印出与[field]个文件的数量相同的行。
  • 请注意,假设每个csv文件没有重复的行

答案 1 :(得分:0)

尝试这样的事情:

awk '{ array[$1]++ } END { for(i in array) { if(array[i] > 1) print i } }' *.txt

每个csv文件只有一列,因此您不需要指定字段分隔符,如果在所有csv文件中存在多行,则会打印一行。