Команда `cut` — извлечение столбцов и фрагментов строк¶
Зачем нужна команда cut¶
Команда cut используется для извлечения определённых частей строк из файла или потока данных. Это особенно полезно при работе с табличными файлами (например, CSV или TSV), когда нужно быстро получить определённый столбец или диапазон данных.
Пример файла example_data.txt (значения разделены табуляцией или запятыми):
Иванов\tИван\t30,Россия
Петров\tАлексей\t25,Казахстан
Смирнова\tМария\t40,Беларусь
Базовое использование: извлечь первое поле¶
Если разделитель — табуляция, можно извлечь фамилии:
cut -f1 example_data.txt
Результат:
Иванов
Петров
Смирнова
Выбор разделителя (-d)¶
Если поля разделены запятой (например, в CSV), нужно указать нужный разделитель:
cut -d',' -f2 example_data.txt
Результат (извлекаем страну):
Россия
Казахстан
Беларусь
Извлечение нескольких полей (-f)¶
Можно извлечь сразу несколько столбцов, например фамилию и имя:
cut -f1,2 example_data.txt
Если используется запятая, не забудьте указать разделитель:
cut -d',' -f1 example_data.txt
Результат (данные до запятой):
Иванов Иван 30
Петров Алексей 25
Смирнова Мария 40
Обратный выбор (–complement)¶
Показать все поля, кроме указанных:
cut --complement -f1 example_data.txt
Результат:
Иван 30,Россия
Алексей 25,Казахстан
Мария 40,Беларусь
Расширенное извлечение: диапазоны¶
Извлечь поля с 2 по 3 (если, например, они разделены пробелами):
cut -d' ' -f2-3 example_data.txt
Результат:
Иван 30,Россия
Алексей 25,Казахстан
Мария 40,Беларусь
Распространённые ошибки¶
cut: delimiter must be a single character — -d принимает только ОДИН символ, например ‘,’, а не “, “.
cut: fields and positions are numbered from 1 — нумерация начинается с 1, а не с 0.
Советы по отладке¶
Используйте cat -A filename для отображения символов табуляции и перевода строки.
Если cut не работает как ожидалось — возможно, данные разделены пробелами, а не табами.
Используйте tr для замены разделителей перед использованием cut.
Пример:
cat example_data.txt | tr '\t' ',' | cut -d',' -f1
—