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 разделяет каждую строку STRING по разделителю SEP, который может быть пустой строкой. Если -m или --max указаны, то выполняется не более MAX разделений для каждой строки STRING. Если -r или --right заданы, разделение выполняется справа налево. Это полезно в сочетании с -m или --max. С -n или --no-empty, пустые результаты исключаются из рассмотрения (например, hello\n\nworld будет расширяться до двух строк, а не трёх). Код возвращает 0, если по крайней мере одно разделение было выполнено, или 1 в противном случае.
Используйте -f или --fields для вывода определённых полей. Если --allow-empty не используется, при отсутствии заданного поля команда завершается со статусом 1 и ничего не выводит.
См. также опцию --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,5 '' abc a c
Примеры с нулевым разделителем
>_ # 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
© 2020 fish-shell developers
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/3.2/cmds/string-split.html