Содержание

Утилита cut

Команда 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 Показать версию и выйти.

Формат списка (LIST)

Вы должны использовать только одну из опций: -b, -c или -f. Список состоит из одного или нескольких диапазонов, разделенных запятыми:

Примеры использования

1. Извлечение полей (столбцов)

Самый частый сценарий — работа с файлами, где данные разделены символом (например, `/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

2. Работа с символами и байтами

Используется, когда данные имеют фиксированную ширину.

# Вывести первые 5 символов каждой строки
 
echo "Hello World" | cut -c 1-5
 
# Результат: Hello
 
# Вырезать со 2-го символа и до конца строки
 
echo "Linux" | cut -c 2-
 
# Результат: inux

3. Использование "дополнения" (--complement)

Позволяет исключить конкретное поле.

# Вывести всё, КРОМЕ первого поля
 
echo "one:two:three" | cut -d ':' -f 1 --complement
 
# Результат: two:three

4. Изменение разделителя на выводе

Полезно для форматирования текста «на лету».

# Взять поля 1 и 3, и заменить ':' на пробел
 
echo "root:x:0:0" | cut -d ':' -f 1,3 --output-delimiter=' '
 
# Результат: root 0

Важные замечания

Внимание: Порядок вывода всегда соответствует порядку чтения из файла. Если вы укажете `-f 3,1`, утилита всё равно сначала выведет 1-е поле, а затем 3-е.