Как разбить строку по разделителю в Bash?
Взято из Bash shell script split array:
IN="bla@some.com;john@home.com"
arrIN=(${IN//;/ })
echo ${arrIN[1]} # Output: john@home.com
Пояснение:
Эта конструкция shell-command заменяет все вхождения ';'
(начальное shell-command //
означает глобальную замену) в split строке IN
на ' '
(одиночный пробел), затем shell-scripting интерпретирует строку с разделителями-пробелами bashrc как массив (это что делают splitting окружающие круглые скобки).
Синтаксис, используемый bash внутри фигурных скобок для bash замены каждого символа ';'
на scripts символ ' '
, называется Parameter Expansion.
Есть bash несколько распространенных string-split ошибок:
- Если в исходной строке есть пробелы, вам нужно будет использовать IFS:
-
IFS=':'; arrIN=($IN); unset IFS;
- Если в исходной строке есть пробелы и разделителем является новая строка, вы можете установить IFS с помощью:
-
IFS=$'\n'; arrIN=($IN); unset IFS;
bash
shell
split
scripting
Как разбить строку по разделителю в Bash?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.