вырезать (Unix)
Оригинальный автор(ы) | AT&T Bell Laboratories |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | февраль 1985 г |
Операционная система | Unix , Unix-подобные , IBM i |
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : GPLv3+ |
В вычислениях , cut
— это утилита командной строки в Unix и Unix-подобных операционных системах , которая используется для извлечения разделов из каждой строки ввода — обычно из файла . В настоящее время он является частью пакета GNU coreutils и базовой системы BSD .
Извлечение сегментов линии обычно может выполняться по байтам ( -b
), персонажи ( -c
) или поля ( -f
), разделенные разделителем ( -d
— символ табуляции по умолчанию). В каждом случае должен быть указан диапазон, состоящий из одного из N
, N-M,
N-
( N
до конца строки) или -M
(начало строки до M
), где N и M отсчитываются от 1 (нулевого значения нет). Начиная с версии 6, если вы включаете нулевое значение, выдается ошибка. До этого значение игнорировалось и принималось равным 1.
История
[ редактировать ]Оригинальная версия Bell Labs была написана Готфридом Людерером . [1] [2] cut
является частью руководства по переносимости X/Open, начиная с выпуска 2 1987 года. Он был унаследован в первой версии POSIX.1 и единой спецификации Unix . [3] Впервые он появился в AT&T System III UNIX в 1982 году. [4]
Версия cut
пакет GNU coreutils был написан Дэвидом М. Игнатом, Дэвидом Маккензи и Джимом Мейерингом. [5] Команда доступна в виде отдельного пакета для Microsoft Windows как часть UnxUtils коллекции , состоящей из собственных Win32- портов распространенных GNU Unix-подобных утилит. [6] Команда Cut также была перенесена в операционную систему IBM i . [7]
Примеры
[ редактировать ]Предполагая, что файл с именем " file
", содержащий строки:
foo:bar:baz:qux:quux one:two:three:four:five:six:seven alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu the quick brown fox jumps over the lazy dog
Чтобы вывести символы с четвертого по десятый каждой строки:
$ cut -c 4-10 file
:bar:ba
:two:th
ha:beta
quick
Чтобы вывести пятое поле до конца строки каждой строки, используя символ двоеточия в качестве разделителя полей:
$ cut -d ":" -f 5- file
quux
five:six:seven
epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog
(обратите внимание: поскольку символ двоеточия не найден в последней строке, отображается вся строка)
Вариант -d
указывает разделитель из одного символа (в приведенном выше примере это двоеточие), который служит разделителем полей. Вариант -f
который определяет диапазон полей, включенных в вывод (здесь поля варьируются от пяти до конца). Вариант -d
предполагает использование опции -f
.
Чтобы вывести третье поле каждой строки, используя пробел в качестве разделителя полей:
$ cut -d " " -f 3 file
foo:bar:baz:qux:quux
one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
brown
(Обратите внимание: поскольку символ пробела не встречается в первых трех строках, отображаются все строки.)
Чтобы разделить два слова, имеющие любой разделитель:
$ line=process.processid
$ cut -d "." -f1 <<< $line
process
$ cut -d "." -f2 <<< $line
processid
Синтаксис
[ редактировать ]cut [-b list] [-c list] [-f list] [-n] [-d delim] [-s] [file]
Флаги, которые можно использовать, включают:
- -б
- Байты; список после -b указывает диапазон байтов , которые будут возвращены, например
cut -b1-66
вернет первые 66 байтов строки. NB При использовании вместе с -n , многобайтовые символы не будут разделены. ННБ. -b будет работать только со строками ввода длиной менее 1023 байта. - -с
- Персонажи; список после -c указывает диапазон символов, которые будут возвращены, например
cut -c1-66
вернет первые 66 символов строки - -ф
- Указывает список полей, разделенных разделителем .
- список
- Список целочисленных полей, разделенных запятыми или пробелами, упорядоченный по возрастанию. - индикатор может быть предоставлен как сокращение, позволяющее включать диапазоны полей, например 4–6 для диапазонов 4–6 или 5- как сокращение для поля 5 до конца и т.д.
- -н
- Использование в сочетании с -b подавляет разделение многобайтовых символов.
- -д
- Разделитель; персонаж, следующий сразу за Опция -d — это разделитель полей для использования вместе с опцией -f опция; разделитель по умолчанию — табуляция . Пробел и другие символы, имеющие особое значение в контексте оболочки , должны быть заключены в кавычки или экранированы при необходимости. используемой
- -с
- Обходит строки, которые не содержат разделителей полей, когда -f указывается, если не указано иное.
- файл
- Файл (и сопровождающий его путь, если необходимо) для обработки в качестве входных данных. Если файл не указан, стандартный ввод . будет использоваться
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «cut(1) — страницы руководства OpenBSD» .
- ^ "[TUHS] Портрет вырезки(1)" . 15 января 2020 г.
- ^ Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- ^ FreeBSD по основным командам Руководство –
- ^ Linux по основным командам Руководство –
- ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
- ^ ИБМ . «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Архивировано (PDF) из оригинала 18 сентября 2020 г. Проверено 05 сентября 2020 г.
Внешние ссылки
[ редактировать ]
- Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- Вырезанная страница Softpanorama .
- Вырезать выбранные поля в каждой строке файла. Портрет Cut(1) и его историческая подоплека.