Linux. Команда cut
Команда cut
предназначена для извлечения (буквально «вырезания») различных полей данных из файла. Если не указано ни одного файла или задано имя «-», используется стандартный ввод. Результат всегда поступает на стандартный вывод. Самый простой вариант команды выглядит так:
$ cut -cсимволы файл
где символы
— количество символов (по месторасположению), которые требуется извлечь из каждой строки, которую содержит указанный файл
.
Этот набор символов может состоять из одного числа, например -c5
для извлечения пятого символа из каждой строки. Это может быть список чисел, разделенных запятыми, например -c1,7,12
для извлечения символов 1, 7 и 12. Или, это может быть диапазон чисел, указываемых через дефис, например -c20-50
для извлечения символов от 20 до 50 включительно. Чтобы извлечь символы до конца строки, второе число в диапазоне можно не указывать.
Рассмотрим пример
$ cat example.txt 123456789 ABCDEFGHI abcdefghi $ cut -c2-5 example.txt 2345 BCDE bcde $ cut -c3,5,8 example.txt 358 CEH ceh $ cut -c6- example.txt 6789 FGHI fghi
Опции -d и -f
Рассмотрим в качестве примера содержимое /etc/passswd
$ head /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
Если данные разделяются конкретным символом, извлечь их можно, используя опции -d
и -f
:
$ cut -dсимвол -fполе файл
Получаем имена пользователей из файла /etc/passwd
:
$ cut -d: -f1 /etc/passwd root daemon bin sys sync ..........
Имена пользователей и домашние директории
$ cut -d: -f1,6 /etc/passwd root:/root daemon:/usr/sbin bin:/bin sys:/dev sync:/bin ..........
Если опция -d
не указана, по умолчанию используется символ табуляции.
Справка по команде
$ cut --help Использование: cut ПАРАМЕТР… [ФАЙЛ]… Печатает выбранные части строк из каждого ФАЙЛА на стандартный вывод. Если ФАЙЛ не задан или задан как -, читает стандартный ввод. Аргументы, обязательные для длинных параметров, обязательны и для коротких. -b, --bytes=СПИСОК выбрать только заданные байты -c, --characters=СПИСОК выбрать только заданные символы -d, --delimiter=РАЗДЕЛИТЕЛЬ использовать для разделения полей РАЗДЕЛИТЕЛЬ вместо табуляции -f, --fields=СПИСОК выбрать только заданные поля; также печатать все строки, не содержащие разделителей, если только не задан параметр -s -n (игнорируется) --complement дополнить множество выбранных байт, символов или полей -s, --only-delimited не печатать строки, не содержащие разделителей --output-delimiter=СТРОКА использовать СТРОКУ для разделения полей при выводе, по умолчанию используется разделитель для ввода -z, --zero-terminated разделитель строк NUL, а не символ новой строки --help показать эту справку и выйти --version показать информацию о версии и выйти Используйте один и только один из параметров: -b, -c или -f. СПИСКИ состоят из диапазона или нескольких диапазонов, разделенных запятыми. Выбранные части входного файла печатаются в том порядке, в котором они появляются на входе, и печатаются ровно один раз. Диапазоны задаются следующим образом: Н Н-ный байт, символ или поле; отсчитывается от 1 Н- от Н-ного байта, символа или поля до конца строки Н-М от Н-ного до М-ного (включительно) байта, символа или поля -М от первого до М-ного (включительно) байта, символа или поля