Linux 将部分字符串转换为另一个字符集

Linux 将部分字符串转换为另一个字符集,linux,bash,Linux,Bash,我需要以utf-8编码方式显示文本 echo "sometext1 ${DATA[1]} \ sometext2 ${DATA[2]} \ sometext3 ${DATA[3]} \ sometext4 ${DATA[4]} \ sometext5 ${DATA[5]}" sometext*编码为utf-8的文本 ${DATA[1]}包含数字 ${DATA[2]}包含数字 ${DATA[3]}包含编码为windows-1251的文本 ${DATA[4]}包含数字 ${DATA[5]}包含编

我需要以utf-8编码方式显示文本

echo "sometext1 ${DATA[1]} \
sometext2 ${DATA[2]} \
sometext3 ${DATA[3]} \
sometext4 ${DATA[4]} \
sometext5 ${DATA[5]}"
  • sometext*编码为utf-8的文本
  • ${DATA[1]}包含数字
  • ${DATA[2]}包含数字
  • ${DATA[3]}包含编码为windows-1251的文本
  • ${DATA[4]}包含数字
  • ${DATA[5]}包含编码为windows-1251的文本
我试着做到以下几点:

DATA_A=$(${DATA[3]}|iconv -f "windows-1251" -t "UTF-8")
DATA_B=$(${DATA[5]}|iconv -f "windows-1251" -t "UTF-8")

echo "sometext1 ${DATA[1]} \
sometext2 ${DATA[2]} \
sometext3 $DATA_A \
sometext4 ${DATA[4]} \
sometext5 $DATA_B"
我没有得到一部分行文本的转换

如果我只是转换这些变量,那么一切都很好:

echo ${DATA[3]}|iconv -f "windows-1251" -t "UTF-8"
echo ${DATA[5]}|iconv -f "windows-1251" -t "UTF-8"

以下命令中缺少
echo

DATA_A=$(echo "${DATA[3]}"|iconv -f "windows-1251" -t "UTF-8")
DATA_B=$(echo "${DATA[5]}"|iconv -f "windows-1251" -t "UTF-8")
或者避开烟斗

DATA_A=$(iconv -f "windows-1251" -t "UTF-8" <<< "${DATA[3]}")
DATA_B=$(iconv -f "windows-1251" -t "UTF-8" <<< "${DATA[5]}")

DATA_A=$(iconv-f“windows-1251”-t“UTF-8”感谢第二个解决方案!