Finden Sie gemeinsame Linien zwischen mehreren Dateien

20

Ich habe 4 Dateien, die wie sind

       file A
       >TCONS_00000867
       >TCONS_00001442
       >TCONS_00001447
       >TCONS_00001528
       >TCONS_00001529
       >TCONS_00001668
       >TCONS_00001921

       file b
       >TCONS_00001528
       >TCONS_00001529
       >TCONS_00001668
       >TCONS_00001921
       >TCONS_00001922
       >TCONS_00001924

       file c
       >TCONS_00001529
       >TCONS_00001668
       >TCONS_00001921
       >TCONS_00001922
       >TCONS_00001924
       >TCONS_00001956
       >TCONS_00002048

       file d
       >TCONS_00001922
       >TCONS_00001924
       >TCONS_00001956
       >TCONS_00002048

Alle Dateien enthalten mehr als 2000 Zeilen und sind nach der ersten Spalte sortiert.

Ich möchte gemeinsame Zeilen in allen Dateien finden. Ich habe awk und grep and comm ausprobiert, aber nicht funktioniert

user106326
quelle

Antworten:

24

Da die Dateien bereits sortiert sind:

comm -12 a b |
  comm -12 - c |
  comm -12 - d
Stéphane Chazelas
quelle
3
cat a b c d |sort |uniq -c |sed -n -e 's/^ *4 \(.*\)/\1/p'
Piotr
quelle
Speichern Sie das sed, um doppelte Zeilen in vielen Dateien zu finden: catbis sortbis uniq -c. Irgendwie habe ich nicht ganz darüber nachgedacht, gute Antwort!
Smaslennikov
Sie können den Befehl uniq auch verwenden, um nur doppelte Zeilen zu drucken:uniq -cd
mems