Przejdź do głównej zawartości

comm


  • comm – narzędzie służące do porównywania dwóch posortowanych plików linia po linii.
  • Pokazuje linie unikalne dla pierwszego pliku, unikalne dla drugiego oraz wspólne dla obu.
  • Część pakietu GNU coreutils, dostępna w większości systemów Linux i uniksopodobnych.

Okno terminala
comm [opcje] plik1 plik2
  • Pliki wejściowe muszą być posortowane – w przeciwnym razie wynik może być nieprawidłowy.

ParametrOpis
-1Nie pokazuj linii unikalnych dla pierwszego pliku.
-2Nie pokazuj linii unikalnych dla drugiego pliku.
-3Nie pokazuj linii wspólnych dla obu plików.
--check-orderSprawdza, czy pliki są posortowane.
--nocheck-orderNie sprawdza sortowania.
--output-delimiter=STRINGZmienia domyślny separator kolumn.
--helpWyświetla pomoc.

Okno terminala
# Przykład 1: Porównanie dwóch posortowanych plików
comm file1.txt file2.txt
# Przykład 2: Pokazanie tylko wspólnych linii
comm -12 file1.txt file2.txt
# Przykład 3: Pominięcie linii unikalnych dla pierwszego pliku
comm -1 file1.txt file2.txt
# Przykład 4: Porównanie z niestandardowym separatorem
comm --output-delimiter=" | " file1.txt file2.txt

  • Komenda comm działa poprawnie tylko na plikach posortowanych leksykograficznie – można użyć sort przed porównaniem.
  • Przydatna do porównywania wyników zapytań, list plików, danych tekstowych w automatyzacji i testach.
  • W przeciwieństwie do diff, skupia się na unikalności i wspólności, a nie na edycyjnych różnicach.

Błąd / KomunikatPrzyczynaRozwiązanie
comm: file1.txt is not in sorted orderPlik nie jest posortowanyUżyj sort file1.txt -o file1.txt przed porównaniem.
No such file or directoryNie istnieje jeden z plikówZweryfikuj poprawność ścieżki.
Permission deniedBrak dostępu do plikuUruchom z sudo lub zmień uprawnienia.