将sed与数组一起使用

时间:2013-02-24 13:38:33

标签: bash sed

有谁可以告诉我为什么这不起作用?

Temp=$(sed -n '/"${Arr[$index]}"/,/"${Arr[$((index+1))]}"/p' $Text);

它仍然不起作用。我试着这样做:

index=0
while [ "$index" -lt "$((Arr_LEN-1))" ]; do
    Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text);       
    let "index++"
done

2 个答案:

答案 0 :(得分:5)

因为sed脚本是单引号,这会阻止所有扩展:

  

用单引号括起字符可保留引号中每个字符的字面值。

将单引号更改为双引号应该有所帮助:

  

用双引号括起字符会保留引号内所有字符的字面值,但$,`,\除外,当历史记录扩展为          启用,!字符$和`在双引号内保留其特殊含义。

答案 1 :(得分:3)

因为您使用的是单引号。尝试:

Temp=$(sed -n "/${Arr[$index]}/,/${Arr[$((index+1))]}/p" $Text);