加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 使用空格将字符串(存储在变量中)分割成多个单词,而不是

发布时间:2020-12-15 19:08:11 所属栏目:安全 来源:网络整理
导读:我正在为我写一个复杂的脚本,我的目标是做以下事情。我有一个字符串进来,看起来像这样: 2012 2013 "multiple words" 我的目标是将这些每一个都放在一个由空格分割的数组中,但只能用于单个字匹配,而不是双引号。应该考虑一个字。所以我的想法是这样做两
我正在为我写一个复杂的脚本,我的目标是做以下事情。我有一个字符串进来,看起来像这样:
2012 2013 "multiple words"

我的目标是将这些每一个都放在一个由空格分割的数组中,但只能用于单个字匹配,而不是双引号。应该考虑一个字。所以我的想法是这样做两步。首先匹配那些倍数的单词,从字符串中删除那些,然后在另一个由空格分割的迭代中。
不幸的是,我找不到如何回应比赛的帮助。到目前为止我有这个:

array=$(echo $tags | sed -nE 's/"(.+)"/1/p')

但这将导致(在OS X上):

2012 2013 multiple words

预期结果:

array[1]="2012"
array[2]="2013"
array[3]="multiple words"

我将如何解决这类问题?

谢谢。

eval是邪恶的,但这可能是其中很方便的情况之一
str='2012 2013 "multiple words"'
eval x=($str)
echo ${x[2]}
multiple words

或者更新版本的bash(在4.3上测试)

s='2012 2013 "multiple words"'
declare -a 'a=('"$s"')'
printf "%sn" "${a[@]}"
2012
2013
multiple words

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读