【发布时间】:2016-05-30 00:51:21
【问题描述】:
在 Bash 脚本中,我想将一行分成几块并将它们放入一个数组中。
行:
巴黎ABFranceABE欧洲
我想将它们拆分成这样的数组(使用 AB):
array[0] = Paris
array[1] = France
array[2] = Europe
我想使用简单的代码,命令的速度无关紧要。我该怎么做?
【问题讨论】:
在 Bash 脚本中,我想将一行分成几块并将它们放入一个数组中。
行:
巴黎ABFranceABE欧洲
我想将它们拆分成这样的数组(使用 AB):
array[0] = Paris
array[1] = France
array[2] = Europe
我想使用简单的代码,命令的速度无关紧要。我该怎么做?
【问题讨论】:
这是一个不需要子外壳的(即它都是内置的)。您需要选择一个不能出现在数据中的分隔符(此处为 @):
str='ParisABFranceABEurope'
IFS='@' read -r -a words <<< "${str//AB/@}"
echo "${words[0]}"
echo "${words[1]}"
echo "${words[2]}"
请打鼓……
$ source foo.sh
Paris
France
Europe
【讨论】:
${words[0]}, ...,并使用 -r 和 read。
$declare -a array=($(echo "ParisABFranceABEurope" | awk -F 'AB' '{for (i=1;i<=NF;i++) print $i}'))
$ echo "${array[@]}"
Paris France Europe
【讨论】: