如何使用bash替换字符串的一部分?

如何使用bash替换字符串的一部分?,bash,shell,grep,Bash,Shell,Grep,我有来自用户的字符串,其形式为1,2,3和任意数量的数字。我要做的是用数组中每个数字的索引处的对应值替换这些数字。假设我的数组有[tom][jerry][sue]。我想让我的绳子在处理的时候看起来像汤姆,杰瑞,苏。我应该使用grep吗?狂欢节 string="1,2,3" names=( nobody tom jerry sue ) indexes=( $(sed 's/,/ /g' <<< "$string") ) result="" pad="" for i in ${in

我有来自用户的字符串,其形式为<代码>1,2,3和任意数量的数字。我要做的是用数组中每个数字的索引处的对应值替换这些数字。假设我的数组有[tom][jerry][sue]。我想让我的绳子在处理的时候看起来像汤姆,杰瑞,苏。我应该使用grep吗?狂欢节

string="1,2,3"
names=( nobody tom jerry sue )
indexes=( $(sed 's/,/ /g' <<< "$string") )
result=""
pad=""
for i in ${indexes[@]}
do
    result="$result$pad${names[$i]}"
    pad=","
done
echo "$result"
  • 索引=(…)

    这是一个数组赋值。它将把
    中的任何内容产生的单词作为数组的元素处理。当然,
    names=(…)
    作业就是这样工作的

  • sed。。。
    
  • 索引=(…)

    这是一个数组赋值。它将把
    中的任何内容产生的单词作为数组的元素处理。当然,
    names=(…)
    作业就是这样工作的


  • sed。。。你能解释一下吗?我应该更具体地问你sed语法是如何工作的,但我可以从你给我的东西中理解出来。谢谢。这里不需要
    sed
    :这里不需要
    sed
    索引=($(sed's/,//g')你能解释一下吗?我应该更具体地问你sed语法是如何工作的,但我可以从你给我的东西中弄明白。谢谢。这里不需要
    sed
    :索引=($(sed's/,//g'
    indexes=( $(sed 's/,/ /g' <<< "$string") )
    
    indexes=( 1 2 3 )