string-split0 — разделение по нулевому байту
Синопсис
string split [(-f | --fields) FIELDS] [(-m | --max) MAX] [-n | --no-empty]
[-q | --quiet] [-r | --right] SEP [STRING ...]
string split0 [(-f | --fields) FIELDS] [(-m | --max) MAX] [-n | --no-empty]
[-q | --quiet] [-r | --right] [STRING ...]
Описание
string split разделяет каждую строку STRING по разделителю SEP, который может быть пустой строкой. Если указано -m или --max, то для каждой строки STRING выполняется не более MAX разделений. Если задано -r или --right, разделение выполняется справа налево. Это полезно в сочетании с -m или --max. С -n или --no-empty пустые результаты исключаются из рассмотрения (например, hello\n\nworld будет расширяться до двух строк, а не трёх). Код выхода: 0, если выполнено хотя бы одно разделение, или 1 в противном случае.
Используйте -f или --fields для вывода определённых полей. FIELDS — это строка, содержащая номера и/или диапазоны полей, разделённые запятыми. Каждое поле индексируется с единицы и будет выведено на отдельной строке. Если заданное поле отсутствует, команда завершается с кодом 1 и ничего не выводит, если не используется --allow-empty.
См. также опцию --delimiter команды read.
string split0 разделяет каждую строку STRING по нулевому байту (NUL). Опции такие же, как string split за исключением того, что разделитель не задаётся.
split0 имеет важное свойство, что его вывод не подвергается дальнейшему разделению при использовании в подстановке команд, что позволяет подстановке команд генерировать элементы, содержащие символы новой строки. Это наиболее полезно при использовании с утилитами Unix, которые генерируют нулевые байты, например, find -print0 или sort -z. См. примеры использования split0 ниже.
Примеры
>_ string split . example.com example com >_ string split -r -m1 / /usr/local/bin/fish /usr/local/bin fish >_ string split '' abc a b c >_ string split --allow-empty -f1,3-4,5 '' abcd a c d
Примеры с нулевыми разделителями
>_ # Count files in a directory, without being confused by newlines. >_ count (find . -print0 | string split0) 42 >_ # Sort a list of elements which may contain newlines >_ set foo beta alpha\ngamma >_ set foo (string join0 $foo | sort -z | string split0) >_ string escape $foo[1] alpha\ngamma
© 2005-2009 Axel Liljencrantz, 2009-2023 fish-shell contributors
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.6/cmds/string-split0.html