[ad_1]
Как пользователи Linux, мы регулярно взаимодействуем с текстовыми файлами. Одна из распространенных операций, которые мы выполняем с этими файлами, это фильтрация текста. Linux предоставляет многие утилиты командной строки для фильтрации текста, например – grep, fgrep, сед, аукИ список продолжается.
Однако в этом руководстве мы обсудим еще одну утилиту для фильтрации текста под названием резать, который используется для удаления определенного раздела из строки ввода. Команда cut выполняет фильтрацию на основе позиции байта, символа, поля и разделителя.
В этом руководстве для начинающих мы узнаем о команда вырезания с примерами в командной строке Linux. Следуя этому руководству, пользователи командной строки Linux смогут эффективно использовать команду cut в своей повседневной жизни.
вырезать синтаксис команды
Синтаксис команда вырезания такой же как и любой другая команда Linux:
$ cut <OPTIONS>... [FILE-1] [FILE-2] ...
В приведенном выше синтаксисе угловая скобка (<>)
представляет обязательные аргументы, тогда как квадратная скобка ([])
представляет необязательные параметры.
Теперь, когда мы знакомы с синтаксисом команда вырезания. Далее давайте создадим образец файла для использования в качестве примера:
$ cat file.txt
1. Распечатать первый байт файла
резать Команда позволяет нам извлекать текст на основе позиции байта, используя -b
вариант.
Давайте используем приведенную ниже команду для извлечения первого байта из каждой строки файла:
$ cut -b 1 file.txt
В этом примере мы видим, что резать команда показывает только первый символ, потому что все символы имеют длину один байт.
2. Печать нескольких байтов файла
В предыдущем примере мы видели, как выбрать один байт из файла. Однако команда cut также позволяет нам выделять несколько байтов с помощью запятой.
Давайте используем приведенную ниже команду, чтобы выбрать первые четыре байта из файла:
$ cut -b 1,2,3,4 file.txt
В этом примере мы выбрали последовательные байты, но это не обязательно. Мы можем использовать любую допустимую позицию байта с резать команда.
3. Распечатайте диапазон байтов файла
В предыдущем примере мы использовали запятые для выбора последовательных байтов. Однако этот подход не подходит, если мы хотим последовательно выбрать большое количество байтов. В таких случаях мы можем использовать дефис (-)
чтобы указать диапазон байтов.
Чтобы понять это, воспользуемся 1-12 в качестве диапазона байтов для выбора первых двенадцати байтов из каждой строки:
$ cut -b 1-12 file.txt
Аналогичным образом мы можем выбрать диапазон байтов из середины. Например, следующая команда выбирает байты из столбцов с номерами от 17 до 30:
$ cut -b 17-30 file.txt
4. Печать Укажите позицию начального байта файла
Иногда мы хотим извлечь весь текст из определенной позиции байта. В таких случаях мы можем опустить позицию конечного байта.
Например, мы можем использовать следующую команду для печати всех байтов, начиная с позиции 17:
$ cut -b 17- file.txt
В приведенной выше команде 17 представляет начальную позицию байта, тогда как дефис (-)
представляет собой конец строки.
5. Печать Укажите положение конечного байта файла
Аналогичным образом мы также можем указать только позицию конечного байта. Например, приведенная ниже команда печатает все байты от начала строки до 12-го столбца:
$ cut -b -12 file.txt
В приведенной выше команде дефис (-)
представляет собой начало строки, тогда как 12 представляет позицию конечного байта.
6. Вырезать первый байт по положению символа
В последних нескольких разделах мы увидели, как выполнять извлечение текста на основе позиции байта. Теперь давайте посмотрим, как выполнить извлечение текста по положению символа.
Для этого мы можем использовать -c
возможность вырезать первый байт из следующей многобайтовой строки:
$ echo école | cut -b 1 �
В приведенном выше выводе мы видим, что команда вырезания показывает вопросительный знак вместо символа. é
. Это происходит потому, что мы пытаемся напечатать первый байт из многобайтового символа.
Теперь воспользуемся -c
возможность вырезать тот же многобайтовый символ и наблюдать за результатом:
$ echo école | cut -c 1 é
В приведенном выше выводе мы видим, что теперь команда cut показывает ожидаемый результат.
Важно отметить, что не все версии команд вырезания поддерживают многобайтовые символы. Например, Ubuntu и его производные не поддерживают многобайтовые символы.
Чтобы понять это, давайте запустим ту же команду на Линукс Минт который получен из Убунту:
Здесь мы можем видеть, что резать Команда одинаково обрабатывает как многобайтовые, так и однобайтовые символы. Следовательно, он не генерирует ожидаемый результат.
7. Вырезать строку по разделителю в Linux
По умолчанию резать команда использует Вкладка символ в качестве разделителя. Однако мы можем переопределить это поведение по умолчанию, используя -d
вариант.
Часто, -d
вариант используется в сочетании с -f
опция, которая используется для выбора определенного поля.
Чтобы это понять, давайте воспользуемся символом пробела в качестве разделителя и напечатаем первые два поля с помощью -f
вариант:
$ cut -d " " -f 1,2 file.txt
В приведенном выше примере мы использовали запятую с -f
возможность выбора нескольких полей.
8. Печатать все байты или символы, кроме выбранных
Иногда мы хотим напечатать все символы, кроме нескольких. В таких случаях мы можем использовать --complement
вариант. Как следует из названия, эта опция печатает все столбцы, кроме указанных.
$ cut -c 1 --complement file.txt
В приведенном выше выводе мы видим, что --complement
опция печатает все символы, кроме первого символа.
Важно отметить, что в этом примере мы использовали запятые для выбора нескольких полей. Однако мы также можем использовать и другие поддерживаемые диапазоны. Мы можем обратиться к первым нескольким примерам этого руководства, чтобы лучше понять диапазоны.
Заключение
В этом руководстве для начинающих мы обсудили практические примеры резать команда с фильтрацией текста на основе позиции байта, позиции символа и разделителя.
Знаете ли вы какой-либо другой лучший пример команды cut в Linux? Сообщите нам свое мнение в комментариях ниже.