2016-11-28 12 views
0

1つのフォルダにcsvファイルの数が不定です。複数のCSVファイルの一致を見つける

File1.csv

rs1000 
rs2000 
rs4000 
rs5000 
... 
私は、そのフォルダ内のすべてのCSVファイルを比較したい

、出力行のみでCSVファイル:すべてのCSVは、このように、行のdiferent数と1つの列のみを持っていますすべてのファイルに共通しています。 私は、このコマンドを持っている:

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 
  • ワンライナーは、
  • 値(発生)
  • 最後に*.csvの数と同じ発生で線を印刷するたびにインクリメントハッシュテーブル(AWKアレイ)にすべての行を読み取りファイル。
  • 注、各csvファイルが何の重複行
+0

ARGC-1の機能は何ですか? – dood

+0

@doodはファイルの数です。 manページplsを確認してください。 – Kent

+0

完璧な作品、感謝の仲間 –

0

このような何かを試してみてください:それはすべてCSVファイルで複数回存在する場合は、フィールドセパレータを指定する必要はありませんので、

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

各csvファイルは1列のみを持ち、行が印刷されます。

+0

それはすべてのファイルで共通ではない行を表示し続けます –

+0

@BorjaLeónああ、行はすべてのファイルになければなりません。その場合、ファイル数を数え、その数をif文で現在使用されている1に置き換えます。 – dood

関連する問題