Утилита cut
— инструмент командной строки Linux, предназначенный для обработки текста. Ее основная функция заключается в извлечении определенных секций / блоков символов из строк текстового файла или входных данных.
В этой статье мы покажем, как использовать утилиту cut
в ОС Linux.
Содержание:
- Синтаксис команды cut
- Вывод конкретного байта из строк файла
- Отображение нескольких байт (или их диапазона) из строк файла
- Вывод на экран символов текста, начиная с определенного байта
- Вывод на экран символов текста до определенного байта
- Извлечение символов на основе их позиций
- Извлечение столбцов текста по указанному разделителю
- Отображение всех байтов или символов текста, кроме выбранных
- Выводы
Синтаксис команды cut
Команда cut
имеет простой синтаксис, который выглядит следующим образом:
Где:
[options]
— различные опции, которые расширяют функционал утилиты;[file]
— входной файл для обработки (если файл не указан, cut считывает данные со стандартного ввода).
Далее мы будем работать с файлом example.txt
. Вот его содержимое:
Читайте также: 12 полезных команд для фильтрации текста и эффективных операций с файлами в Linux.
Вывод конкретного байта из строк файла
Извлечение байтов — выделение фрагментов текста на основе положения байтов. Опция -b
утилиты cut
позволяет извлечь из строк текста символы, основываясь на их байтовых позициях. Например, чтобы вывести символы, занимающие 1 и 3 байтовые позиции, используем следующие команды:
Отображение нескольких байт (или их диапазона) из строк файла
Для опции -b
можно перечислить через запятые позиции байт символов, которые необходимо вывести на экран одновременно. Например:
Чтобы в терминале показать диапазон байтов, укажем в качестве аргумента опции -b
первый и последний байт интервала через дефис. Например, выведем символы с 1-го по 5-ый и с 7-го по 15-ый байта для каждой строки:
Читайте также: 12 практических примеров команды grep в Linux.
Вывод на экран символов текста, начиная с определенного байта
Допустим, нам нужно вывести в окно терминала все символы строк текста, начиная с четвертого байта. Для этого в качестве аргумента -b
укажем значение 4-
:
Вывод на экран символов текста до определенного байта
Также нам нужно извлечь все символы от начала строки до 10-го байта. Чтобы это сделать, укажем -10
в качестве аргумента -b
:
Извлечение символов на основе их позиций
Извлечение символов подразумевает выделение текста с ориентацией на позиции самих символов, а не байтов. Такой подход позволяет корректно работать с многобайтовыми знаками, воспринимая их как отдельные единицы. Например, некоторые специальные символы и иероглифы занимают несколько байт, поэтому их извлечение по байтам может привести к ошибкам.
Выведем на экран первый и десятый символ каждой строки файла example.txt
:
Читайте также: Курс LFCS — часть 1: обработка текстовых потоков в Linux.
Извлечение столбцов текста по указанному разделителю
По умолчанию команда cut
использует символ табуляции в качестве разделителя колонок текста. Однако, можно указать собственный символ, благодаря опции -d
. В нашем файле столбцы разделены запятыми, поэтому будем использовать этот символ.
К примеру, выведем на экран второй столбец. Для этого дополнительно применим опцию -f
, а в качестве ее аргумента укажем 2
:
Чтобы отобразить в терминале несколько столбцов, перечислим их порядковые номера через запятые:
Отображение всех байтов или символов текста, кроме выбранных
Также утилита позволяет применить параметр --complement
, чтобы исключить определенные байты или поля из вывода команды cut
. Например, чтобы отобразить все столбцы текста, кроме второго или третьего, используем следующие команды:
Также выведем в терминал все байты текста, за исключением:
- второго в каждой строке;
- первых двух.
Выводы
Мы показали несколько базовых примеров использования утилиты cut
для обработки текста в ОС Linux. С ее помощью Вы можете извлекать символы из строк текстового файла или входных данных.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
6 комментариев. Оставить новый
есть число 555-5555085797118, как из данного числа вырезать 5-7 символ, т.е. должно получиться 555-5085797115
echo 555-5555085797118 | cut -c «-4,8-«
echo 555-5555085797118 | cut -c 5-7
Vlladimir, Aidar спрашивал «как вырезать» в смысле, как убрать 5-7 символ, а всё остальное вывести.
Есть небольшой файл, в котором перечислены файлы домашней директории (где первый столбец это имя файла), как выделить первый столбец и отделить от дальнейшей строки если в ней содержится цифра «3».
Подскажите, пожалуйста. Есть файл, в нем информация по столбцам разделена знаком «=». Я вырезал часть текста после знака, с помощью
cut -d= -f1 orig_file.txt > /home/user/my_file.txt
подправил. А как можно его вставить обратно?
Пример:
data=Данные
name=Имя
organisation=Организация
и т.д.