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 разделяет каждую СТРОКУ по разделителю РАЗДЕЛИТЕЛЬ, который может быть пустой строкой. Если указаны -m или --max, то для каждой СТРОКИ выполняется не более MAX разделений. Если указано -r или --right, разделение выполняется справа налево. Это полезно в сочетании с -m или --max. При использовании -n или --no-empty пустые результаты исключаются (например, hello\n\nworld будет расширено до двух строк, а не трёх). Код завершается со статусом 0, если было выполнено хотя бы одно разделение, или 1 в противном случае.
Используйте -f или --fields для вывода определённых полей. FIELDS — это строка, разделенная запятыми, с номерами полей и/или диапазонами. Каждое поле нумеруется с 1 и выводится на отдельной строке. Если заданное поле не существует, команда завершается со статусом 1 и ничего не выводит, если не используется --allow-empty.
См. также опцию --delimiter команды read.
string split0 разделяет каждую СТРОКУ по нулевому байту (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
Примеры с разделителями NUL
>_ # 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
© 2022 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.5/cmds/string-split0.html