Команда Cut в Linux

Обновлено: 03.07.2024

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

Синтаксис

Вырезать [опция] … [имя файла]..

Чтобы получить версию cut для Linux, мы можем использовать указанные ниже методы.


Извлекает байты из текста

Чтобы извлечь байты из файла или отдельной строки, мы будем использовать параметр «-b» в команде с числом или списком чисел, разделенных запятыми в команде. Строка вводится перед каналом, и этот канал сделает эту строку входными данными для функции cut, описанной после канала. Рассмотрим строку алфавитов. И мы хотим получить одну букву, которая присутствует в определенном байте, равном 12.


Из вывода видно, что символ «l» присутствует в 12-м байте строки. Теперь мы предоставим более одного байта в одной строке. Этот список будет определен через запятую. Давайте посмотрим.


Извлекает байты из файла

Список без диапазонов
Чтобы извлечь часть текста из определенного файла, мы применим тот же метод использования –b в команде. Список будет добавлен так же, как в приведенном выше примере. Рассмотрим файл с именем tool.txt.


Теперь мы применим команду для извлечения символов первых трех байтов из текста в файле. Это извлечение будет выполнено для каждой строки файла.


Вывод показывает, что в выводе будут показаны первые три символа. В то время как другие вычитаются.

Список с диапазонами
Диапазон байтов вводится дефисом (-) между двумя байтами. В команде необходимо указывать числа либо в виде диапазона, либо без так как если число отсутствует, то система выдаст ошибку. Рассмотрим тот же файл. Здесь мы применили два диапазона, разделенных запятыми.


Из вывода видно, что слова из диапазонов 1–2 и 5–8 присутствуют. Если мы хотим получить вывод с первого байта до конца, то используется 1-. По умолчанию в качестве вывода отображается от первого до последнего байта строки.

Если мы используем 4- вместо 1-, то он покажет вывод, начиная с 4-го байта до последнего байта строки в файле.


Теперь видно, что в некоторых строках на 4-м бите есть пробел между символами. Это пространство также извлекается. Например, в Mac OS есть место в 4-м байте, поэтому оно также учитывается.

Извлечение текста с помощью столбцов

Чтобы извлечь символы из текста, мы используем –c в команде. Он также содержит либо диапазон чисел, либо список, разделенный запятыми, как в процедуре bytes. Пробелы между словами рассматриваются как символы. Рассмотрим тот же файл выше, чтобы уточнить пример.


Двигаясь вперед, здесь используется список чисел с тремя числами. Итак, эти три числа будут извлечены из всех строк файла.


Для этой цели мы также рассмотрим еще один пример с одним числом. У нас есть файл с именем cutfile2.txt.


В этом файле мы применим команду для вырезания и извлечения слов, начиная с начала и заканчивая номером 5.

Из вывода видно, что выбраны первые 5 символов. В 4-й строке вы заметите, что пробел между двумя словами также считается.


Извлечь текст с помощью поля

Команда Cut обеспечивает вывод в пределах. Это полезно для фиксированной длины строки в файле. Принимая во внимание, что некоторые строки в файлах не содержат фиксированных строк. Чтобы сделать его точно релевантным, мы будем использовать поля вместо столбцов. При использовании –f диапазоны не определяются. По умолчанию в качестве разделителя полей используется табуляция. Но чтобы добавить другие разделители, мы используем -d в команде.

Синтаксис

Используя –d, а затем разделитель, мы добавляем –f и число в команде. Теперь рассмотрим приведенный пример. Если используется –d, то пробел будет считаться разделителем. Слова перед пробелом будут напечатаны. Вы можете увидеть результат, используя эти строки команды. В приведенном ниже примере есть строка, и мы хотим вырезать здесь слово «вырезать». Так как это после пробела, мы определим разделитель пробела и номер поля, равный 2. Итак, приступим к команде.


Теперь мы применим эту концепцию разделителя полей к файлу.


Теперь рассмотрим другой пример, в котором мы будем использовать «:» в качестве разделителя в команде. Ввод вводится с каталогом.


Примените команду разделителя с –f и числом.


Из вывода вы увидите, что текст перед двоеточием отображается как результат.

– -output-delimiter

В команде cut входной разделитель точно такой же, как выходной разделитель. Но чтобы настроить его, мы будем использовать ключевое слово — output-delimiter с добавлением номера поля. Рассмотрим файл cutfile1.txt.


Здесь мы хотим добавить знак $$ между каждым словом первого предложения. Итак, добавим поля с 1 по 7. Так как в первой строке присутствует 7 слов.


Из вывода видно, что там, где был пробел, теперь он заменен двойным знаком доллара, который мы написали в команде. Если мы применяем ту же команду к тому же файлу, изменяются только поля, мы вводим только начальные и конечные слова. Вы увидите, что разделитель «@» будет присутствовать только между этими двумя словами, а не между каждым словом строки в файле.


Использование –Complement в команде Cut

–complement можно использовать с другими параметрами, такими как –c и –f. Как видно из названия, выход является дополнением к входу. Рассмотрим пример, в котором мы использовали 5 чисел, чтобы сократить столбец.


Заключение

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

Об авторе

Акса Ясин

Я целеустремленный профессионал в области информационных технологий и обожаю писать. Я технический писатель и люблю писать для всех разновидностей Linux и Windows.

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

В этом руководстве вы узнаете, что такое команда вырезания и как ее использовать.

Учебник по команде Linux cut .

  • Система под управлением Linux.
  • Доступ к терминалу.

Вырезать синтаксис команды

Команда cut имеет следующий синтаксис:

Параметры

Необходимо указать [опцию]. В противном случае команда выдает ошибку. Доступные параметры описаны в следующем разделе.

Файл

В поле [файл] введите имя файла, который вы хотите обработать. Если не указать имя файла, команда cut будет читать из стандартного ввода, и в этом случае cut фильтрует конвейер.Если вы укажете несколько имен файлов, команда вырезания объединит запрошенное содержимое.

Примечание. Еще одна команда Linux, которая создает форматированные выходные данные, — это команда awk.

Параметры команды «Вырезать»

Параметры команды вырезания предоставляют инструкции по использованию разделителя, вырезанию по положению байта, полю или символу. Используйте один параметр для каждой выполняемой вами команды вырезания.

 Использование команды cat для отображения файла

Примечание. Используйте команду cat, чтобы отобразить содержимое файла в терминале.

Чтобы извлечь первый байт из каждой входной строки, запустите:

 Извлечение определенного байта из файла». ширина=

Эта команда печатает только первый байт из каждой строки ввода файла.

В следующем примере показано, как подключиться к команде who и извлечь из вывода первые 5 байтов:

Извлечение байтов из вывода команды who.

Вырезать по символам

Чтобы вырезать по символам, укажите параметр -c. Вырезание по символам аналогично вырезанию по байтам, за исключением того, что вам нужно указать позицию символа, а не позицию байта. Синтаксис:

Аргумент [СПИСОК] указывает символы, которые нужно извлечь из каждой строки [файла].

 Извлечение определенного символа из файла с помощью вырезания». ширина=

Команда извлекает все от символа 10 до конца строки из каждой строки employees.txt. Результаты выводятся на стандартный вывод.

В следующем примере показан результат, когда файл не указан и функция cut считывает ввод со стандартного ввода. Взгляните на вывод команды who:

Пример кто командует выводом». ширина=

В выходных данных указано, что один пользователь в настоящее время вошел в систему. Используйте команду cut, чтобы извлечь имя вошедшего в систему пользователя из выходных данных команды who:

Извлечение имен пользователей из вывода команды who с помощью cut.

В приведенном выше примере мы указываем cut извлекать символы с 1 по 8 из каждой строки ввода. В случае нескольких результатов отсортируйте результаты, добавив к команде | сортировать .

Примечание. Чтобы узнать позицию символа, сначала запустите команду who и посчитайте соответствующие позиции символов. Выходные данные команды who имеют фиксированный формат, поэтому позиции символов не меняются. Однако данные не всегда организованы фиксированным образом в каждом выводе команды, поэтому обязательно проверяйте вывод перед его передачей по конвейеру.

Кроме того, используйте cut для извлечения нескольких разных символов из строки. Например, отобразить имя пользователя и время входа всех вошедших пользователей:

Извлечение нескольких символов из строки с помощью вырезания.

Вырезать по разделителю

Если поля не разделены символом табуляции по умолчанию, используйте параметр -d, чтобы указать другой разделитель. Это означает, что символ, указанный после опции -d, считается разделителем строк. Синтаксис:

Вместо аргумента [разделитель] укажите нужный разделитель. В качестве разделителя можно использовать любой символ. Использование команды cut для извлечения полей из файла без указания параметра -d означает, что разделителем по умолчанию является символ табуляции.

В следующем примере мы используем пробел в качестве разделителя и печатаем второе поле:

 Извлечение полей из файла с использованием выреза и разделителя». ширина=

Примечание. Команда echo выводит текстовую строку, которую вы предоставляете в качестве выходного сообщения.

Вырезать по полям

При передаче в команды, выходные данные которых не имеют фиксированного формата (например, команда who), параметр -c бесполезен. В этом случае лучше использовать параметр -f для разделения по полям.

Извлечение текста из файла с использованием полей.

В приведенном выше примере мы использовали параметр -f для извлечения второго поля из файла employees.txt.

Чтобы вырезать определенные поля из файла, укажите другой разделитель. Например, вывод файла /etc/passwd содержит всех пользователей вашей системы, идентификационные номера, домашний каталог и т. д.

Вывод файл /etc/passwd.

Данные в файле /etc/passwd не выровнены так же, как данные в выходных данных команды who. Таким образом, вы не можете извлечь всех пользователей в системе, полагаясь на номер символа.

Однако поля в файле /etc/passwd разделены двоеточием. Следовательно, подсчитайте количество двоеточий, чтобы извлечь те же поля. Например:

Фильтрация вывода файла /etc/passwd с помощью команды cut.

Вывод возвращает каждого пользователя в системе и его домашний каталог, соответствующие полям 1 и 6 соответственно.

Дополнить выделение

Опция --complement печатает все, кроме символа/байта/поля в указанной позиции. Например, следующая команда выводит все поля, кроме первого и третьего:

Пример опции cut --complement.

Укажите разделитель вывода

При указании нескольких символов/байтов/полей команда cut объединяет вывод без разделителя. Укажите разделитель в выводе с помощью параметра --output-delimiter.

Например, чтобы установить разделитель вывода на _ (подчеркивание), используйте:

 Указание разделителя вывода в команде вырезания». ширина=

Примечание. Если вы только начинаете работать с командами Linux, ознакомьтесь с подробным обзором в нашей статье Памятка по командам Linux.

Теперь вы знаете, что такое команда cut в Linux и как ее использовать для обработки файла или вывода команды. Не стесняйтесь тестировать различные параметры, чтобы привыкнуть к ним и максимально эффективно использовать командную строку для управления данными и выводами команд.


Дэйв Маккей


Дэйв Маккей
Писатель

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

Команда вырезания

Команда cut — ветеран мира Unix, дебютировавший в 1982 году как часть AT&T System III UNIX. Его цель в жизни — вырезать фрагменты текста из файлов или потоков в соответствии с установленными вами критериями. Его синтаксис так же прост, как и его назначение, но именно эта совместная простота делает его таким полезным.

В проверенном временем способе UNIX, комбинируя cut с другими утилитами, такими как grep, вы можете создавать элегантные и эффективные решения сложных проблем. Хотя существуют разные версии cut, мы собираемся обсудить стандартную версию GNU/Linux. Имейте в виду, что другие версии, в частности версия BSD, не включают все описанные здесь параметры.

Вы можете проверить, какая версия установлена ​​на вашем компьютере, введя эту команду:

Если вы видите «GNU coreutils» в выводе, вы используете версию, которую мы собираемся описать в этой статье. Все версии cut имеют некоторые из этих функций, но в версию для Linux были добавлены улучшения.

Первые шаги с монтажом

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

Чтобы выбрать один байт, мы используем параметр -b (byte) и сообщаем cut, какой байт или байты нам нужны. В данном случае это пятый байт. Мы отправляем строку «how-to geek» в команду cut с вертикальной чертой «|» из echo .

Извлечение одного байта с вырезом

Пятый байт в этой строке — «t», поэтому cut отвечает выводом «t» в окне терминала.

Чтобы указать диапазон, мы используем дефис. Чтобы извлечь байты с 5 по 11 включительно, мы введем следующую команду:

Извлечение диапазона байтов с вырезом

Вы можете указать несколько отдельных байтов или диапазонов, разделив их запятыми. Чтобы извлечь байт 5 и байт 11, используйте эту команду:

Извлечение двух байтов с вырезом

Чтобы получить первую букву каждого слова, мы можем использовать эту команду:

Извлечение трех байт с вырезом

Если вы используете дефис без первого числа, cut возвращает все от позиции 1 до числа. Если вы используете дефис без второго числа, cut возвращает все от первого числа до конца потока или строки.

Извлечение диапазонов байт с вырезом

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

Использование cut с символами почти такое же, как и с байтами. В обоих случаях необходимо соблюдать особую осторожность со сложными символами. Используя параметр -c (символьный), мы указываем, что cut должен работать с символами, а не с байтами.

Извлечение символов и диапазонов символов с вырезом

Они работают именно так, как вы ожидаете. Но взгляните на этот пример. Это слово состоит из шести букв, поэтому запрос cut на возврат символов от одного до шести должен вернуть слово целиком. Но это не так. Это короткий символ. Чтобы увидеть слово целиком, мы должны запросить символы от одного до семи.

Специальные символы могут занимать более одного символа

Проблема в том, что символ «ñ» на самом деле состоит из двух байтов. Мы можем увидеть это довольно легко. У нас есть короткий текстовый файл, содержащий эту строку текста:

Содержимое короткого текстового файла

Мы изучим этот файл с помощью утилиты hexdump. Использование параметра -C (канонический) дает нам таблицу шестнадцатеричных цифр с эквивалентом ASCII справа. В таблице ASCII «ñ» не отображается, вместо этого есть точки, представляющие два непечатаемых символа. Это байты, выделенные в шестнадцатеричной таблице.

Эти два байта используются программой отображения — в данном случае оболочкой Bash — для идентификации «ñ». Многие символы Unicode используют три или более байтов для представления одного символа.

Если мы запрашиваем символ 3 или символ 4, нам показывают символ непечатаемого символа. Если мы запрашиваем байты 3 и 4, оболочка интерпретирует их как «ñ».

Использование вырезания для извлечения символов, составляющих специальный символ

Использование вырезания с данными с разделителями

Мы можем попросить cut разделить строки текста, используя указанный разделитель. По умолчанию cut использует символ табуляции, но легко указать ему использовать все, что мы хотим. Поля в файле «/etc/passwd» разделены двоеточием «:», поэтому мы будем использовать его в качестве разделителя и извлечем некоторый текст.

Части текста между разделителями называются полями и упоминаются так же, как байты или символы, но им предшествует параметр -f (поля). Вы можете оставлять пробел между буквой «f» и цифрой или нет.

Первая команда использует параметр -d (разделитель), чтобы указать cut использовать «:» в качестве разделителя. Он будет извлекать первое поле из каждой строки в файле «/etc/passwd». Это будет длинный список, поэтому мы используем заголовок с опцией -n (число), чтобы показать только первые пять ответов. Вторая команда делает то же самое, но использует хвост, чтобы показать нам последние пять ответов.

Извлечение диапазона полей из файла /etc/passwd

Чтобы извлечь выбранные поля, перечислите их в виде списка, разделенного запятыми. Эта команда извлечет поля с первого по третье, пятое и шестое.

Извлечение диапазона полей из файла /etc/passwd

Включив grep в команду, мы можем искать строки, содержащие «/bin/bash». Это означает, что мы можем перечислить только те записи, для которых Bash является оболочкой по умолчанию. Обычно это «обычные» учетные записи пользователей. Мы попросим поля от одного до шести, потому что седьмое поле является полем оболочки по умолчанию, и мы уже знаем, что это такое — мы ищем его.

Извлечение полей с первого по шестое из файла /etc/passwd

Еще один способ включить все поля, кроме одного, — использовать параметр --complement. Это инвертирует выбор поля и показывает все, что не было запрошено. Давайте повторим последнюю команду, но попросим только седьмое поле. Затем мы снова запустим эту команду с параметром --complement.

Использование параметра --complement для инвертирования выбора поля

Первая команда находит список записей, но седьмое поле не дает нам ничего, чтобы различать их, поэтому мы не знаем, к кому относятся записи. Во второй команде, добавив параметр --complement, мы получаем все, кроме седьмого поля.

Вырез трубопровода В разрез

Придерживаясь файла «/etc/passwd», давайте извлечем пятое поле. Это фактическое имя пользователя, которому принадлежит учетная запись пользователя.

Пятое поле из файла /etc/passwd может иметь подполя, разделенные запятыми

Пятое поле содержит подполя, разделенные запятыми. Они редко заполняются, поэтому отображаются через запятую.

Мы можем удалить запятые, направив вывод предыдущей команды в другой вызов cut . Второй экземпляр cut использует запятую «,» в качестве разделителя. Опция -s (только с разделителями) указывает cut скрывать результаты, в которых вообще нет разделителя.

Врезка трубопровода в разрез для работы с двумя типами разделителей

Поскольку корневая запись не имеет подполей с запятыми в пятом поле, она скрыта, и мы получаем нужные результаты — список имен «настоящих» пользователей, настроенных на этом компьютере.

Разделитель вывода

  • ID: идентификационный номер базы данных
  • Имя: имя субъекта.
  • Фамилия: фамилия субъекта.
  • email: их адрес электронной почты.
  • IP-адрес: их IP-адрес.
  • Бренд. Марка автомобиля, на котором они ездят.
  • Модель: модель автомобиля, которым они управляют.
  • Год: год выпуска автомобиля.

Текстовый файл фиктивных данных CSV

Если мы укажем cut использовать запятую в качестве разделителя, мы сможем извлекать поля так же, как и раньше. Иногда вам потребуется извлечь данные из файла, но вы не хотите, чтобы разделитель полей был включен в результаты. С помощью параметра --output-delimiter мы можем указать cut, какой символ — или фактически последовательность символов — использовать вместо фактического разделителя.

Использование --output-delimiter для изменения разделителя в результатах

Вторая команда указывает cut заменить запятые пробелами.

Мы можем пойти дальше и использовать эту функцию для преобразования вывода в вертикальный список. Эта команда использует символ новой строки в качестве выходного разделителя. Обратите внимание на «$», который нам нужно включить, чтобы символ новой строки действовал, а не интерпретировался как буквальная последовательность из двух символов.

Мы воспользуемся grep, чтобы отфильтровать запись для Морганы Ренвик, и попросим cut напечатать все поля от поля два до конца записи, а также использовать символ новой строки в качестве выходного разделителя.

Олди, но Голди

На момент написания этой статьи маленькой команде cut исполнилось 40 лет, и мы все еще используем ее и пишем о ней сегодня. Я полагаю, что нарезка текста сегодня такая же, как и 40 лет назад. То есть намного проще, когда у вас есть нужный инструмент под рукой.

  • › Что означает XD и как вы его используете?
  • › Как восстановить метки панели задач в Windows 11
  • › Почему прозрачные чехлы для телефонов желтеют?
  • › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
  • › Как установить Google Play Маркет в Windows 11

Учебник по использованию cut — команды UNIX и Linux для вырезания разделов из каждой строки файлов. Примеры обрезки по символу, позиции байта, обрезки на основе разделителя и способов изменения выходного разделителя.

Приблизительное время чтения: 3 минуты

Оглавление

вырезать справочную страницу

Что такое команда cut в UNIX?

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

Как вырезать по положению байта

Чтобы вырезать часть строки, указав позицию байта, используйте параметр -b.

Как вырезать по символу

Чтобы вырезать по символу, используйте параметр -c. Это выбирает символы, указанные в опции -c. Это может быть список чисел, разделенных запятыми, диапазон чисел или одно число.

Если ваш входной поток основан на символах, -c может быть лучшим вариантом, чем выбор по байтам, поскольку часто символы составляют более одного байта.

В следующем примере символ «♣» занимает три байта. С помощью параметра -c можно правильно выбрать символ вместе с любыми другими интересующими символами.

Как вырезать по разделителю

Чтобы вырезать по разделителю, используйте параметр -d. Обычно это используется в сочетании с параметром -f для указания поля, которое следует вырезать.

В следующем примере файл CSV существует и сохранен как name.csv .

В качестве разделителя можно указать запятую с помощью -d ',' . Затем cut может вытащить интересующие поля с помощью флага -f. В следующем примере вырезается первое поле.

Несколько полей можно сократить, передав список, разделенный запятыми.

Как вырезать по дополнительному шаблону

Чтобы вырезать по дополнению, используйте параметр --complement. Обратите внимание, что эта опция недоступна в версии cut для BSD. Параметр --complement выбирает инверсию параметров, переданных в cut.

В следующем примере параметр -c используется для выбора первого символа. Поскольку параметр --complement также передается для вырезания, второй и третий символы вырезаются.

Как изменить разделитель вывода

Чтобы изменить разделитель вывода, используйте параметр --output-delimiter. Обратите внимание, что эта опция недоступна в версии cut для BSD. В следующем примере точка с запятой преобразуется в пробел и выбираются первое, третье и четвертое поля.

Дополнительная литература

У вас есть новости или предложения по этой статье? Вы можете отредактировать его здесь и отправить мне запрос на вытягивание.

Последние публикации

Об авторе

Джордж Орнбо живет в Великобритании.

Он увлекается людьми, музыкой, едой и писательством. В предыдущей версии себя он писал книги по технологиям.

Читайте также: