Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取列并插入数组[Bash]_Bash - Fatal编程技术网

获取列并插入数组[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<