Как использовать команду «Вырезать» в Linux

12 set 2022 4 min di lettura
Как использовать команду «Вырезать» в Linux
Indice dei contenuti

Введение

В системах Linux и Unix доступно множество утилит, позволяющих обрабатывать и фильтровать текстовые файлы. Cut — это утилита командной строки, которая позволяет вырезать части строк из указанных файлов или данных конвейера и распечатать результат на стандартном выходе. Его можно использовать для вырезания частей строки по разделителю, положению байта и символу.

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

Используйте команду «Вырезать».

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

cut OPTION... [FILE]...

При использовании команды вырезания вам необходимо использовать одну и только одну из следующих опций:

  • -f ( --fields=LIST ): выберите, указав поле, набор полей или диапазон полей. Это наиболее часто используемый вариант.
  • -b ( --bytes=LIST ): выберите, указав байт, набор байтов или диапазон байтов.
  • -c ( --characters=LIST ): выберите, указав символ, набор символов или диапазон символов.

Другие варианты:

  • -d ( --delimiter ) — определяет разделитель, который будет использоваться вместо стандартного разделителя «TAB».
  • --complement — интегрировать выделение. Когда используется эта опция, cut будет отображать все байты, символы или поля, кроме выбранных.
  • -s ( --only-delimited ) — по умолчанию cut будет печатать любую строку, не содержащую символы-разделители. Когда используется этот параметр, cut не печатает строки, не содержащие разделителей.
  • --output-delimiter — по умолчанию используется разделитель ввода в качестве разделителя вывода. Эта опция позволяет указать другую строку разделителя вывода.

Команда вырезания может принимать ноль или более входных имен ФАЙЛОВ. Если FILE не указан или если FILE равен -, cut будет читать стандартный ввод.

Аргумент LIST с параметрами -f, -b и -c может быть целым числом, несколькими целыми числами, разделенными запятыми, серией целых чисел или несколькими диапазонами целых чисел, разделенными запятыми. Каждый интервал может быть одним из следующих:

  • N n-ое поле, байт или символ, начиная с 1.
  • N- от n-го поля, байта или символа до конца строки.
  • NM от n-го до n-го поля, байта или символа.
  • -M с первого по n-е поле, байт или символ.

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

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

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

321:235 7689 M:2354 Admin 02:11:1980
 345:956 1254 M:5765 Sales 12:03:1979

Чтобы отобразить 1-е и 3-е поля, вы должны использовать:

cut test.txt -f 1,3
321:235 M:2354
 345:956 M:5765

Или, если вы хотите отображать с 1-го по 4-е поле:

cut test.txt -f -4
321:235 7689 M:2354 Admin
 345:956 1254 M:5765 Sales

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

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

Например, чтобы отобразить 1-е и 3-е поля, используя «:» в качестве разделителя, введите:

cut test.txt -d ':' -f 1,3
321:7689 Admin 01
 345:1254 Sales 11

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

echo "Lorem ipsum dolor sit amet" | cut -d ' ' -f 2
ipsum

Интегрировать выбор

Чтобы завершить список полей выбора, используйте параметр --complement. Это напечатает только те поля, которые не выбраны с помощью опции -f.

Следующая команда напечатает все поля, кроме 1-го и 3-го:

cut test.txt -f 1,3 --complement
7689 Admin 02:11:1980
 1254 Sales 12:03:1979

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

Чтобы указать разделитель вывода, используйте параметр --output-delimiter. Например, чтобы установить разделитель вывода на _:

cut test.txt -f 1,3 --output-delimiter='_'
321:235_M:2354
 345:956_M:5765

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

Прежде чем идти дальше, давайте проведем различие между байтами и символами.

Один байт равен 8 битам и может представлять 256 различных значений. Когда был установлен стандарт ASCII, в нем учитывались все буквы, цифры и символы, необходимые для работы с английским языком. Таблица символов ASCII содержит 128 символов, и каждый символ представлен одним байтом. Когда компьютеры стали популярными во всем мире, технологические компании начали вводить новые кодировки символов для разных языков, а для языков с более чем 256 символами простое сопоставление 1 к 1 было невозможно.Это приводит к различным проблемам, таким как совместное использование документов. или просмотр веб-сайтов, и требовался новый стандарт Unicode, который мог бы работать с большинством систем письма в мире. UTF-8 был создан для решения этих проблем. В UTF-8 не все символы представлены одним байтом. Символы могут быть представлены от 1 байта до 4 байтов.

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

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

Выберите 5-й байт:

echo 'drüberspringen' | cut -b 5
b

Выберите 5-й, 9-й и 13-й байты:

echo 'drüberspringen' | cut -b 5,9,13
bpg

Выберите диапазон от 1-го до 5-го байта:

echo 'drüberspringen' | cut -b 1-5
drüb

На момент написания этой статьи версия для обрезки в GNU coreutils не имеет возможности обрезки по символам. При использовании опции -c cut она ведет себя так же, как и при использовании опции -b.

Примеры вырезания

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

Получить список всех пользователей

Вывод команды getent passwd передается команде cut, которая печатает первое сохраненное значение, используя : в качестве разделителя.

getent passwd | cut -d ':' -f1

Посмотреть 10 наиболее часто используемых команд

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

history | cut -c8- | sort | uniq -c | sort -rn | head

Вывод

К настоящему времени вы должны хорошо понимать, как использовать команду cut в Linux. Хотя команда cut очень полезна, у нее есть некоторые ограничения. Он не поддерживает указание более одного символа в качестве разделителя и не поддерживает несколько дециметров.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.