Полное руководство по команде cut в Linux: извлечение нужных столбцов из логов и CSV-файлов

Обзор

Когда в среде Linux необходимо быстро извлечь только нужные столбцы из больших файлов логов или данных CSV, команда cut является самым легковесным и мощным инструментом. В этой статье мы рассмотрим ключевые практические методы: от разделения полей по разделителю до среза по байтам и символам фиксированной ширины.

Извлечение данных CSV и системных учетных записей с помощью разделителя (-d) и полей (-f)

Выполните команду mkdir -p ~/cut_demo && cd ~/cut_demo, чтобы создать специальный каталог для практики работы с командой cut и перейти в него.

mkdir -p ~/cut_demo && cd ~/cut_demo

Создайте тестовый файл с данными пользователей, разделенными запятыми (,), записав файл users.csv с помощью команды echo.

echo -e ‘id,name,role,department\n1,alice,admin,security\n2,bob,dev,backend\n3,charlie,dev,frontend’ > users.csv

Команда cut — это утилита для извлечения определенных столбцов (полей), байтов или символьных диапазонов из текстовых файлов или потоков вывода на основе заданного разделителя.
Укажите запятую (,) в качестве разделителя с помощью опции -d и выберите второе и четвертое поля с помощью опции -f, чтобы аккуратно вывести только имя и отдел из файла users.csv.
⚙️ [Основные опции]

-d : явно задает разделитель, используемый для разбиения полей (по умолчанию — символ табуляции).
-f : указывает номера или диапазоны извлекаемых полей (столбцов).
-c : вырезает данные по позициям символов вместо байтов.
-b : вырезает данные по позициям байтов.
--complement : инвертирует выборку, выводя все оставшиеся части, кроме указанных полей или диапазонов символов.
-s : исключает из вывода строки, не содержащие разделитель.
--output-delimiter : изменяет разделитель полей на указанную строку при выводе результатов.

cut -d’,’ -f2,4 users.csv

Извлеките из файла /etc/passwd, содержащего учетные записи системы Linux, только имя учетной записи (поле 1) и путь к командной оболочке по умолчанию (поле 7), используя двоеточие (:) в качестве разделителя, и просмотрите первые 5 строк с помощью команды head.
Комбинируя команду cut с конвейером (|), можно легко просматривать только ключевые столбцы данных из объемных системных конфигурационных файлов.

cut -d’:’ -f1,7 /etc/passwd | head -n 5

Работа с логами фиксированной ширины с помощью срезов по байтам (-b) и символам (-c)

Чтобы продолжить практику, выполните команду cd ~/cut_demo для перехода в ранее созданный рабочий каталог.

cd ~/cut_demo

Для практики срезов по символам фиксированной ширины создайте тестовый файл лога service.log, где дата, время и уровень логирования записаны в единообразном формате.

echo -e ‘2026-10-07 14:00:01 [INFO] Service started\n2026-10-07 14:00:05 [WARN] High memory usage\n2026-10-07 14:00:12 [ERROR] Connection timed out’ > service.log

Укажите опцию -c1-10 для команды cut, чтобы вырезать символы с 1-го по 10-й в каждой строке и аккуратно извлечь только дату в формате ГГГГ-ММ-ДД.

cut -c1-10 service.log

Используйте опцию -c12-19, чтобы точно выделить и вывести метку времени чч:мм:сс, расположенную с 12-го по 19-й символ файла лога.

cut -c12-19 service.log

Если опустить конечную позицию, например -c22-, можно одним срезом получить весь оставшийся текст от 22-го символа до конца каждой строки, извлекая область сообщений.

cut -c22- service.log

Изменение выходного разделителя (–output-delimiter) и исключение указанных полей (–complement)

Выполните команду cd ~/cut_demo, чтобы перейти в каталог с созданными ранее практическими файлами.

cd ~/cut_demo

С помощью опции --output-delimiter можно задать произвольную строку для разделения полей в выводе вместо исходного разделителя по умолчанию.
Извлеките поля 2 и 3 из файла users.csv, разделенного запятыми (,), и вставьте между полями пробел и символ вертикальной черты (|) для лучшей читаемости.

cut -d’,’ -f2,3 –output-delimiter=’ | ’ users.csv

Опция --complement инвертирует выборку, выводя все столбцы, кроме указанных.
Используя ее вместе с опцией -f3, можно исключить 3-е поле (информацию о роли) и оставить все остальные поля без изменений.

cut -d’,’ –complement -f3 users.csv

Практический конвейер: статистический анализ IP-адресов подключений с помощью связки cut, sort и uniq

Выполните команду cd ~/cut_demo, чтобы перейти в созданный ранее рабочий каталог и продолжить практику.

cd ~/cut_demo

Для имитации анализа клиентских запросов к веб-серверу создайте тестовый файл лога access.log, содержащий IP-адреса подключений и сведения о HTTP-запросах, разделенные пробелами.

echo -e ‘192.168.1.10 - - [07/Oct/2026] “GET /index.html” 200\n192.168.1.15 - - [07/Oct/2026] “POST /login” 401\n192.168.1.10 - - [07/Oct/2026] “GET /dashboard” 200\n10.0.0.5 - - [07/Oct/2026] “GET /api/v1” 200\n192.168.1.10 - - [07/Oct/2026] “POST /logout” 200’ > access.log

Выделите только первый столбец — IP-адреса клиентов, разделенные пробелом, с помощью опции -d' ' -f1 команды cut.
Затем отсортируйте их с помощью sort, подсчитайте количество повторений с помощью uniq -c и примените sort -nr, чтобы получить отсортированный по убыванию рейтинг IP-адресов с наибольшей частотой обращений.

cut -d’ ’ -f1 access.log | sort | uniq -c | sort -nr

Мы подробно рассмотрели, как с помощью команды cut аккуратно извлекать необходимые столбцы из логов и данных CSV.
Используйте возможности разделителей и опций полей, чтобы сделать повседневную обработку текста и подготовку данных еще более эффективными.