cut
- cut – standardowa komenda systemów Unix/Linux służąca do selektywnego wyodrębniania fragmentów plików lub strumieni tekstowych, bazując na numerach kolumn, bajtów lub znaków.
- Często używana w potokach (
|
) do filtrowania danych CSV/TSV, logów czy wyników innych narzędzi (np.grep
,awk
). - Dostępna domyślnie w większości dystrybucji Linuksa, macOS, BSD oraz w środowiskach POSIX‑owych.
Składnia
Dział zatytułowany „Składnia”cut [opcje] [plik ...]
- Może czytać z plików lub ze standardowego wejścia (stdin).
- Najczęstsze przełączniki globalne:
-d
(delimiter),-f
(fields),-c
(characters),-b
(bytes),--complement
(odwrotność wyboru).
Parametry
Dział zatytułowany „Parametry”Parametr | Opis |
---|---|
-d <znak> | Ustala znak separatora pól (domyślnie |
-f <zakres> | Wybiera podane pola (kolumny) – np. 1,3 , 2‑ , ‑4 . |
-c <zakres> | Wyodrębnia zakres znaków w każdym wierszu. |
-b <zakres> | Wyodrębnia zakres bajtów (różni się przy UTF‑8). |
--complement | Zwraca wszystko poza wskazanym zakresem. |
-s | Pomija wiersze bez separatora, gdy używasz -f . |
--output-delimiter=<znak> | Ustala znak wyjściowego separatora pól. |
Przykłady użycia
Dział zatytułowany „Przykłady użycia”# Wyodrębnienie 1. i 3. kolumny (rozdzielnik to przecinek)cut -d"," -f1,3 dane.csv
# Zmiana separatora wyjściowego na średnikcut -d"," -f2‑ --output-delimiter=";" dane.csv
# Pobranie pierwszych 10 znaków każdego wiersza z plikucut -c1‑10 raport.txt
# Wyświetlenie wszystkich bajtów poza pierwszymi pięciomacut -b6‑ --complement < bin.log | hexdump -C
- Kodowanie znaków:
-c
działa na znakach Unicode, ale-b
na surowych bajtach – przy UTF‑8 wynik może się różnić. - Separator TAB: bez
-d
domyślnym ogranicznikiem kolumn jest znak tabulacji. - Różnice powłok: w niektórych shellach należy ująć zakresy w apostrofy, by zapobiec rozwinięciu przez powłokę (np.
cut -f "1-3"
).
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 |
---|---|---|
cut: the delimiter must be a single character | Podano wieloznakowy separator | Użyj jednego znaku lub narzędzi typu awk . |
cut: -f list exhausted | Zakres pól wykracza poza liczbę kolumn | Zweryfikuj zakres lub dodaj --complement . |
Linie bez separatora dają pełny wiersz | Brak -s przy -f | Dodaj -s , by pominąć wiersze bez separatora. |
Linki i źródła
Dział zatytułowany „Linki i źródła”- man cut – oficjalna dokumentacja.
- GNU coreutils – cut – pełny manual online.
- CheatSheet: cut – praktyczne przykłady.