Você não pode gravar em variáveis Bash de dentro de awk
.
O que você deve fazer é fazer com que awk
imprima tudo o que deseja armazenar na matriz, um item por linha e, em seguida, use o Bash built-in mapfile
para lê-lo em uma matriz:
mapfile -t array1 < <( awk -F 'string1_to_search' '{print }' "$READ_FILE" )
Depois disso, sua matriz está em $array1
. Você também não precisa declare
de antemão, mapfile
faz isso para você.
Mais informações sobre mapfile
podem ser encontradas digitando help mapfile
.
Nota:
Eu usei a substituição de processo redirecionada mapfile ... < <( awk ... )
aqui em vez de um canal , porque você não pode usar awk ... | mapfile ...
mapfile
como parte de um pipeline. Isso ocorre porque os pipelines são executados em subshells, que não propagam suas variáveis alteradas de volta para o shell pai, ou seja, o valor de myarray
seria perdido.