string-split - разделение строк по разделителю
Синтаксис
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 и ничего не выводит, если не используется --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-split.html