【问题标题】:string split in bashbash中的字符串拆分
【发布时间】:2016-05-30 00:51:21
【问题描述】:

在 Bash 脚本中,我想将一行分成几块并将它们放入一个数组中。

行:

巴黎ABFranceABE欧洲

我想将它们拆分成这样的数组(使用 AB):

array[0] = Paris
array[1] = France
array[2] = Europe

我想使用简单的代码,命令的速度无关紧要。我该怎么做?

【问题讨论】:

标签: string bash split


【解决方案1】:

这是一个不需要子外壳的(即它都是内置的)。您需要选择一个不能出现在数据中的分隔符(此处为 @):

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]}, ...,并使用 -rread
【解决方案2】:
$declare -a array=($(echo "ParisABFranceABEurope" | awk -F 'AB' '{for (i=1;i<=NF;i++) print $i}'))
$ echo "${array[@]}"
Paris France Europe

【讨论】:

  • 这适用于示例输入,但需要注意的是它会使生成的标记服从路径名扩展。
猜你喜欢
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 2013-08-08
  • 2019-06-03
相关资源
最近更新 更多