В системах Linux и Unix доступно множество утилит, позволяющих обрабатывать и фильтровать текстовые файлы. Cut – это утилита командной строки, которая позволяет вырезать части строк из указанных файлов или переданных данных и выводить результат в стандартный вывод. Его можно использовать для вырезания частей строки по разделителю, позиции байта и символу.
В этой статье мы покажем вам, как использовать команду Cut в Linux, на практических примерах и подробных объяснениях наиболее распространенных параметров резки.
Как использовать команду «Cut»
Синтаксис команды cut следующий:
cut OPTION... [FILE]...
При использовании команды Cut вы должны использовать один и только один из следующих параметров:
- -f( –fields=LIST) – Выберите, указав поле, набор полей или диапазон полей. Это наиболее часто используемый вариант.
- -b( –bytes=LIST) – Выберите, указав байт, набор байтов или диапазон байтов.
- -c( –characters=LIST) – Выберите, указав символ, набор символов или диапазон символов.
Другие варианты:
- -d( –delimiter) – Укажите разделитель, который будет использоваться вместо разделителя «TAB» по умолчанию.
- –complement- дополнить выбор. При использовании этого параметра вырезаться будут отображаться все байты, символы или поля, кроме выбранного.
- -s( –only-delimited) – По умолчанию cut будет печатать любую строку, не содержащую символа разделителя. При использовании этой опции Cut не будут печатать строки, не содержащие разделителей.
- –output-delimiter- По умолчанию используется входной разделитель в качестве выходного разделителя. Эта опция позволяет вам указать другую строку выходного разделителя.
Команда cut может принимать ноль или более входных имен FILE. Если FILE не указан или если FILE установлен -, cut будет считывать стандартный ввод.
Аргумент LIST, передаваемый параметрам -f, -b и -c может быть целым числом, несколькими целыми числами, разделенными запятыми, диапазоном целых чисел или несколькими целочисленными диапазонами, разделенными запятыми. Каждый диапазон может быть одним из следующих:
- N N-е поле, байт или символ, начиная с 1.
- N- от N-го поля, байта или символа до конца строки.
- N-M от N-го до M-го поля, байта или символа.
- -M от первого до M-го поля, байта или символа.
Как вырезать по полю
Команда Cut в основном используется для отображения выбранных полей из каждой строки файлов или стандартного ввода. Если не указан, по умолчанию используется разделитель «TAB».
В приведенных ниже примерах мы будем использовать следующий файл. Все поля разделены вкладками.
245:789 4567 M:4540 Admin 01:10:1980 535:763 4987 M:3476 Sales 11:04:1978
Для отображения 1-го и 4-го полей вы должны использовать:
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
Как резать на основе разделителя
Чтобы Cut на основе разделителя, используйте параметр -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