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.
Składnia
Dział zatytułowany „Składnia”comm [opcje] plik1 plik2
- Pliki wejściowe muszą być posortowane – w przeciwnym razie wynik może być nieprawidłowy.
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
-1 | Nie pokazuj linii unikalnych dla pierwszego pliku. |
-2 | Nie pokazuj linii unikalnych dla drugiego pliku. |
-3 | Nie pokazuj linii wspólnych dla obu plików. |
--check-order | Sprawdza, czy pliki są posortowane. |
--nocheck-order | Nie sprawdza sortowania. |
--output-delimiter=STRING | Zmienia domyślny separator kolumn. |
--help | Wyświetla pomoc. |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# Przykład 1: Porównanie dwóch posortowanych plikówcomm file1.txt file2.txt
# Przykład 2: Pokazanie tylko wspólnych liniicomm -12 file1.txt file2.txt
# Przykład 3: Pominięcie linii unikalnych dla pierwszego plikucomm -1 file1.txt file2.txt
# Przykład 4: Porównanie z niestandardowym separatoremcomm --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.
Najczęściej spotykane błędy i jak je naprawić
Dział zatytułowany „Najczęściej spotykane błędy i jak je naprawić”Błąd / Komunikat | Przyczyna | Rozwiązanie |
---|---|---|
comm: file1.txt is not in sorted order | Plik nie jest posortowany | Użyj sort file1.txt -o file1.txt przed porównaniem. |
No such file or directory | Nie istnieje jeden z plików | Zweryfikuj poprawność ścieżki. |
Permission denied | Brak dostępu do pliku | Uruchom z sudo lub zmień uprawnienia. |
Linki i źródła
Dział zatytułowany „Linki i źródła”- man comm – oficjalna dokumentacja.
- GNU Coreutils – comm – opis komendy i opcji.