cut to klasyczny uniksowy nożyk do tekstu: czyta dane linia po linii i wycina z każdej z nich tylko to, co wskażesz — konkretne kolumny (pola), zakresy znaków albo bajtów. Idealny, gdy masz plik CSV, wyjście ls -l albo /etc/passwd i potrzebujesz wyłuskać jedną kolumnę zamiast męczyć się regexpami. Działa strumieniowo, więc świetnie wpina się w potoki między innymi komendami.
Składnia i najważniejsze opcje
Podstawowa forma to cut OPCJA... [PLIK...]. Musisz podać jeden z trybów: -f, -c albo -b. Bez pliku cut czyta ze standardowego wejścia.
-f LISTA— wybiera pola (kolumny), np.-f1,3lub zakres-f2-5.-d ZNAK— ustawia separator pól (domyślnie tabulator); współpracuje z-f.-c LISTA— wycina znaki na podanych pozycjach, np.-c1-10.-b LISTA— wycina bajty (uważaj przy UTF-8, gdzie znak to często kilka bajtów).-s— pomija linie bez separatora (bez tego są wypisywane w całości).--complement— odwraca wybór: bierze wszystko poza wskazanym (GNU).--output-delimiter=STR— zmienia separator w wyjściu (GNU).
Przykłady użycia
cut -d: -f1 /etc/passwd— wypisuje same nazwy użytkowników z pliku passwd.cut -d',' -f2,4 dane.csv— z CSV bierze tylko drugą i czwartą kolumnę.echo "abcdef" | cut -c1-3— zwracaabc, czyli pierwsze trzy znaki.ps aux | cut -c1-20— przycina szerokie wyjściepsdo pierwszych 20 kolumn.cut -d: --complement -f1 /etc/passwd— pokazuje wszystkie pola oprócz pierwszego.
Częste błędy i pułapki
Najczęstsza wpadka: cut traktuje separator dosłownie i nie zlepia powtórzonych spacji. Jeśli kolumny rozdzielają różne liczby spacji (jak w ls -l czy ps), -d' ' -f2 da śmieci — wtedy lepszy jest awk albo wcześniejszy tr -s ' '. Druga pułapka to -b kontra -c: na danych w UTF-8 cięcie po bajtach potrafi rozjechać polskie znaki, więc do tekstu używaj -c. Pamiętaj też, że cut nie zmienia kolejności pól: -f3,1 i tak wypisze je w naturalnej kolejności 1,3.
Różnice między systemami też kłują. Wersja GNU (Linux) zna --complement, --output-delimiter i -z (linie kończone bajtem null), ale cut z macOS/BSD ich nie ma — skrypt działający na Linuksie potrafi tam paść z błędem. Jeśli zależy ci na przenośności, sprawdź man cut na docelowej maszynie albo sięgnij po gcut z pakietu coreutils.
Powiązane komendy: awk (gdy potrzebujesz logiki i elastycznych separatorów), paste (sklejanie kolumn), column, tr oraz sort.