Команда Cut в Linux с примерами

Linux Cut Command with Examples

25 Мая 2020 | Терминал

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

Команда Cut в Linux с примерами

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


Как использовать cut команду

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

cut OPTION... [FILE]...
 

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

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

Вы можете использовать один и только один из вариантов, перечисленных выше.

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

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

Команда cut может принимать ноль или более входных имен FILE. Если не FILE указано, или когда FILE есть - , cut будет читать со стандартного ввода.

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

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

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

Чтобы указать поля, которые должны быть вырезаны, вызовите команду с -f опцией. Если не указан, по умолчанию используется разделитель «TAB».

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

test.txt
245:789 4567    M:4540  Admin   01:10:1980
535:763 4987    M:3476  Sales   11:04:1978
 

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

cut test.txt -f 1,3 
245:789	M:4540
535:763	M:3476
 

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

cut test.txt -f -4 
245:789	4567	M:4540	Admin
535:763	4987	M:3476	Sales
 

Как резать на основе разделителя 

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

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

cut test.txt -d ':' -f 1,3 
245:4540	Admin	01
535:3476	Sales	11
 

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

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

Как дополнить выбор 

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

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

cut test.txt -f 1,3 --complement 
4567	Admin	01:10:1980
4987	Sales	11:04:1978
 

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

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

cut test.txt -f 1,3 --output-delimiter='_' 
245:789_M:4540
535:763_M:3476
 

Как вырезать из байтов и символов 

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

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

Опция -b ( --bytes ) указывает команде вырезать секции из каждой строки, заданной заданными позициями байтов.

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

Выберите 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
 

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


Примеры 

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

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

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

getent passwd | cut -d ':' -f1 

Вывод показывает список всех пользователей системы .

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

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

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

Вывод 

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

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


    Комментарии

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

Загрузка комментариев...