获取列并插入数组[Bash]
我有一个数组,其中每个元素的格式如下:获取列并插入数组[Bash],bash,Bash,我有一个数组,其中每个元素的格式如下: somePlane (1,2,3) (1,0,0) (0,0,1) R 我想使用以下命令仅使用第一列和最后一列从中创建一个新数组: newArr=( "echo ${arr[*]}" | awk '{print $1,$5}` ) 上面的命令没有如我所期望的那样工作,我缺少什么?我在您的中给您的解决方案已经是您所需要的答案 NEWARRAY=() for I in "${!OLDARRAY[@]}"; do IFS=$' ' read -ra
somePlane (1,2,3) (1,0,0) (0,0,1) R
我想使用以下命令仅使用第一列和最后一列从中创建一个新数组:
newArr=( "echo ${arr[*]}" | awk '{print $1,$5}` )
上面的命令没有如我所期望的那样工作,我缺少什么?我在您的中给您的解决方案已经是您所需要的答案
NEWARRAY=()
for I in "${!OLDARRAY[@]}"; do
IFS=$' ' read -ra T <<< "${OLDARRAY[I]}"
NEWARRAY[I]="${T[0]} ${T[@]:(-1)}"
done
NEWARRAY=()
对于“${!OLDARRAY[@]}”中的I;做
如果s=$''read-ra T,您希望它打印什么somePlane R
?这仅仅是一个输入错误,甚至是在awk命令末尾的代码中?正确的语法只是一个引号:awk'{print$1,$5}'
Yes。我希望“somePlane R”进入数组单元格。谢谢,这确实有效,但我想知道为什么我所做的工作不起作用。[给了你一票]@Doppelganger内部命令的正确语法是IFS=$'\n';newArr=($(echo“${arr[*]}”| awk'{print$1,$5}'))
。该命令的唯一问题是(a)必须全局地将IFS变量更改为$'\n'。(b) 如果您拥有的任何值成为有效模式,它将随路径名扩展而扩展。因此,您必须禁用路径名扩展或使用另一种格式工具,如readarray
@Doppelganger如果我要使用这种命令,我会这样做:readarray-t newArray<