Skip to content

Команда cut

Описание

Команда cut используется для извлечения определённых столбцов, символов или полей из каждой строки текстового файла или стандартного ввода. Это особенно полезно при обработке CSV-файлов, логов и других структурированных данных.


Синтаксис

cut [опции] [файл(ы)]

или

команда | cut [опции]

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

1. Извлечь определённые символы

cut -c 1-5 файл.txt

Выведет первые 5 символов каждой строки.

2. Извлечь определённые столбцы по номеру

cut -c 3,5,7 файл.txt

Выведет символы на позициях 3, 5 и 7 в каждой строке.

3. Извлечь определённые поля с пользовательским разделителем

cut -d ',' -f 2,4 файл.csv

Использует запятую как разделитель и выводит второе и четвёртое поле каждой строки.

4. Извлечь имя пользователя из /etc/passwd

cut -d ':' -f 1 /etc/passwd

Выведет список всех пользователей системы.

5. Считать данные из stdin

echo "один,два,три" | cut -d ',' -f 2

Выведет:

два

Полезные опции

Опция Описание
-b, --bytes=LIST Выбрать только указанные байты
-c, --characters=LIST Выбрать только указанные символы
-f, --fields=LIST Выбрать только указанные поля
-d, --delimiter=DELIM Указать пользовательский разделитель (по умолчанию — табуляция)
--complement Вывести всё, кроме указанных полей/символов
-s, --only-delimited Не показывать строки без разделителя

Примеры с опциями

1. Вывести все поля, кроме первого

cut -d ',' -f 1 --complement файл.csv

2. Вывести только те строки, где есть нужный разделитель

cut -d ',' -s -f 2 файл.csv

3. Вывести диапазон байтов

cut -b 1-10 файл.txt

Выведет первые 10 байт каждой строки.


Формат LIST

Вы можете указывать: - Одиночное число: 3 → третий символ/поле - Диапазон: 1-5 → от 1 до 5 - Открытый диапазон: 3- → от 3 до конца - Несколько значений через запятую: 1,3,5


Полезные заметки

  • cut работает только с однобайтовыми кодировками, если вы работаете с UTF-8 — используйте awk, sed или другие инструменты.
  • Часто комбинируется с grep, sort, uniq, paste и другими утилитами.
  • Эффективен для быстрого извлечения данных из CSV, TSV и системных файлов (/etc/passwd, /etc/group и др.).

Альтернативы

Инструмент Когда использовать
awk Если нужно более гибко обрабатывать поля
sed Для сложной манипуляции текстом
csvcut (из csvkit) Для работы с CSV-файлами
field Простая альтернатива cut в некоторых shell'ах
perl / python Для сложной обработки текста и юникода

Пример работы

  1. Создайте тестовый файл data.csv: bash echo -e "имя,возраст,город\nАлекс,25,Москва\nОльга,30,СПб" > data.csv

  2. Извлеките имена: bash cut -d ',' -f 1 data.csv Результат: имя Алекс Ольга

  3. Извлеките возраст и город: bash cut -d ',' -f 2,3 data.csv Результат: возраст,город 25,Москва 30,СПб