Команда cut предназначена для извлечения определенных секций (байтов, символов или полей) из каждой строки входных файлов или стандартного ввода и вывода результата.
| Опция | Описание |
|---|---|
| -b, –bytes=LIST | Выбрать только указанные байты. |
| -c, –characters=LIST | Выбрать только указанные символы (полезно для кодировок, где символ > 1 байта). |
| -d, –delimiter=DELIM | Использовать разделитель DELIM вместо стандартного знака табуляции. |
| -f, –fields=LIST | Выбрать только указанные поля (колонки). Также выводит строки без разделителя, если не указана опция -s. |
| –complement | Дополнение: выбрать все байты/символы/поля, кроме указанных. |
| -s, –only-delimited | Не выводить строки, которые не содержат разделитель. |
| –output-delimiter=STRING | Использовать строку STRING как разделитель при выводе (по умолчанию как на входе). |
| -z, –zero-terminated | Использовать NUL (нулевой байт) вместо символа новой строки. |
| –help | Показать справку и выйти. |
| –version | Показать версию и выйти. |
Вы должны использовать только одну из опций: -b, -c или -f. Список состоит из одного или нескольких диапазонов, разделенных запятыми:
Самый частый сценарий — работа с файлами, где данные разделены символом (например, `/etc/passwd`).
# Вывести только имена пользователей (1-е поле, разделитель ':') cut -d ':' -f 1 /etc/passwd # Вывести имя пользователя и его домашнюю директорию (1-е и 6-е поля) cut -d ':' -f 1,6 /etc/passwd # Показать список IP адресов, которые приходили на 3proxy cat 3proxy.log.2026.1.10 | cut -f1 --delim ' ' | sort |uniq
Используется, когда данные имеют фиксированную ширину.
# Вывести первые 5 символов каждой строки echo "Hello World" | cut -c 1-5 # Результат: Hello # Вырезать со 2-го символа и до конца строки echo "Linux" | cut -c 2- # Результат: inux
Позволяет исключить конкретное поле.
# Вывести всё, КРОМЕ первого поля echo "one:two:three" | cut -d ':' -f 1 --complement # Результат: two:three
Полезно для форматирования текста «на лету».
# Взять поля 1 и 3, и заменить ':' на пробел echo "root:x:0:0" | cut -d ':' -f 1,3 --output-delimiter=' ' # Результат: root 0
Внимание: Порядок вывода всегда соответствует порядку чтения из файла. Если вы укажете `-f 3,1`, утилита всё равно сначала выведет 1-е поле, а затем 3-е.