2016-11-28 48 views
0

我在一個文件夾中有數量不確定的csv文件。所有CSV有行diferent數只有一列,就像這樣:查找多個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 

但它表明,並非所有文件中的行。

+0

請提供[MCVE]所以我們可以測試! – fedorqui

回答

1

我沒有測試,但它應該工作。

awk '{line[$0]++}END{for(x in line)if(line[x]==ARGC-1)print x} *.csv 
  • 的單行讀取所有線到一個散列表(AWK陣列)
  • 遞增的值(發生)每次
  • 最後打印出的線條與發生相同的*.csv計數文件。
  • 注意,假設每個CSV文件中不存在重複的行
+0

ARGC-1做什麼? – dood

+0

@dood文件數量。檢查手冊頁。 – Kent

+0

作品完美,感謝隊友 –

0

嘗試是這樣的:

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

每個CSV文件只有一列,這樣你就不需要指定字段分隔符,如果它在所有的CSV文件中存在超過一次印刷線。

+0

它繼續顯示所有文件 –

+0

@BorjaLeón不共同的行,所以一行必須在所有文件中。在這種情況下,計算文件的數量,並將該數字替換爲if語句中現在使用的1。 – dood