Bash:如何使用制表符分隔数组元素,并在同一行上打印?

22 浏览
0 Comments

Bash:如何使用制表符分隔数组元素,并在同一行上打印?

我在bash中有一个数组...比如,my_array:

my_array={1,2,3,4}

我对此有两个要求:

1)在同一行上打印所有元素,2)用制表符分隔每个元素。

当我打印出这些元素时,输出应该是:

1    2    3    4

每个元素之间的“间隙”都是一个制表符。

对如何做到这一点有什么建议将不胜感激。谢谢。

编辑

到目前为止,我尝试了以下方法:

1)我知道我可以这样在同一行上打印出一个数组:

echo {my_array[*]}

2)为了获得所需的制表符,我尝试创建一个只包含制表符的变量,并将其添加到数组的每个元素之间:

temp="    "
for(...)
do
    ((my_array+=$i))
    ((my_array+=$temp))
done

然而,这给我带来了错误。

编辑2

由Inan提供的解决方案

这个方法起作用:

printf '%s\t' "${my_array[@]}"

然而,有几个问题;在最后一个元素之后,如何删除最后一个制表符?

0
0 Comments

这是一个关于如何在Bash中用制表符分隔数组元素并在同一行上打印的问题。问题的原因是在使用"tr"命令时无法正确分隔数组元素。以下是解决方法:

可以尝试使用awk命令来分隔数组元素,并在同一行上打印。以下是示例代码:

my_array=(1,2,3,4)
awk 'BEGIN {OFS="\t"} {for (i=1; i<=NF; i++) {print $i}}' <<< "${my_array[*]}"

这将使用awk命令将数组元素分隔为制表符,并在同一行上打印每个元素。

希望这个解决方法对你有帮助!如果还有其他想法,请随时分享。

0