Введение
При администрировании серверов под управлением Linux системным инженерам регулярно приходится фильтровать структурированные дампы, системные журналы и конфигурационные файлы. Стандартная утилита cut из состава GNU Coreutils остаётся одним из самых легковесных и быстрых инструментов для выборки столбцов, байтов и подстрок. В этой статье мы на практических примерах в Ubuntu разберём основные сценарии её использования — от базового разделения полей до продвинутой модификации выходного формата.
Подготовка тестового окружения и файлов с данными
Чтобы не засорять домашний каталог и безопасно экспериментировать с командами, создадим изолированную директорию и перейдём в неё с помощью mkdir -p ~/cut_practice && cd ~/cut_practice.

Сформируем файл users.txt, имитирующий типовую системную структуру с разделителем-двоеточием (:), аналогично /etc/passwd. Воспользуемся printf для генерации записей об учётных записях:

Для отработки выборки из CSV-файлов, где разделителем выступает запятая (,), создадим документ servers.csv со списком сетевых узлов, их адресов и статусов доступности:

Проверим корректность структуры сгенерированного файла users.txt с помощью cat users.txt:

Аналогично убедимся, что файл servers.csv успешно записан со всеми колонками и кодами ответов, выполнив cat servers.csv:

Выборка колонок с разделителями: флаги -d и -f
Если требуется извлечь строго первый столбец из файла users.txt, ориентируясь на двоеточие как разделитель, выполните cut -d ':' -f 1 users.txt.
Параметр -d ':' указывает граничный символ между полями, а ключ -f 1 указывает утилите отфильтровать только идентификаторы ID.

Когда необходимо забрать сразу несколько несмежных колонок, перечислите их через запятую: cut -d ':' -f 2,4 users.txt.
В результате терминал выведет только имя сотрудника (2-я колонка) и название подразделения (4-я колонка), сохранив исходный разделитель.

Для непрерывных диапазонов полей применяется дефис (-). Команда cut -d ',' -f 1-3 servers.csv распарсит CSV-файл с разделителем-запятой (-d ',') и выведет подряд первые три атрибута: имя хоста, IP-адрес и рабочее состояние.

Если требуется отсечь только первый столбец, забрав все последующие данные до самого конца строки, укажите открытый диапазон: cut -d ':' -f 2- users.txt.
Конструкция -f 2- сообщает программе, что нужно захватить всё содержимое, начиная со второй позиции, проигнорировав поле ID.

Посимвольная и побайтовая нарезка: ключи -c и -b
В ситуациях, когда файл имеет фиксированную ширину колонок без явных разделителей, удобнее оперировать символами. Команда cut -c 1-5 users.txt вырезает ровно с 1-го по 5-й символ в каждой строке документа.

Точно так же можно выделить фрагмент из середины строкового буфера. Вызов cut -c 5-15 users.txt ограничит выборку диапазоном с 5-й по 15-ю знаковую позицию включительно.

Для работы с бинарными строками или ASCII-текстом на низком уровне применяется флаг -b. Инструкция cut -b 1-8 servers.csv выполняет побайтовый срез с 1-го по 8-й байт, изолируя префикс с идентификатором сервера.

Тонкая настройка вывода: замена разделителя и инверсия колонок
Исходный символ-разделитель не всегда удобен для чтения. Чтобы при извлечении 1-й, 2-й и 4-й колонок заменить двоеточия на наглядный пайплайн с пробелами, используйте опцию --output-delimiter: cut -d ':' -f 1,2,4 --output-delimiter=' | ' users.txt.
Этот приём позволяет форматировать отчёты прямо на лету без привлечения sed или awk.

Иногда проще указать колонку, которую нужно выбросить, чем перечислять все нужные поля. Флаг --complement инвертирует логику выборки: cut -d ',' --complement -f 2 servers.csv исключит именно второй столбец (IP-адрес), сохранив в потоке вывода 1-е, 3-е и 4-е поля.

По умолчанию cut выводит строки целиком, если в них не найден заданный разделитель. Чтобы исключить строки, нарушающие формат, добавьте флаг -s (--only-delimited): cut -d ':' -s -f 2 users.txt.
Команда отбросит любые строки без символа : и обработает только валидные записи.

Мы подробно рассмотрели ключевой инструментарий cut в Ubuntu — от базового синтаксиса до специфических флагов инверсии и подавления неразделённых строк. Включение этой утилиты в связку с конвейерами Bash позволит вам существенно ускорить скрипты автоматизации и парсинг журналов без избыточных вычислительных затрат.