Bash - preenche uma matriz 2D do arquivo
Eu sei que é provavelmente algo fácil, mas estou lutando muito duro com isso.
Descrição do problema: Eu tenho um arquivo de texto com coordenadas no formato:
1 2
3 7 ...
onde primeira coluna == 'x' e segunda coluna == 'y' coordenadas.
Agora, eu quero preencher uma matriz 2D do tamanho N x M usando essas coordenadas do arquivo, imprimindo 'X' para os pontos especificados no arquivo e '.' de outra forma.
Exemplo: matriz [1] [2] = 'X', matriz [3] [7] = 'X', matriz [0] [1] = '.'
Até agora eu tentei:
separando colunas x, y e armazenando-as em matrizes como esta:
xcoords="xcoords.txt"
ycoords="ycoords.txt"
head $geneFile | grep " " | awk -F' ' '{print $1}' > $xcoords
head $geneFile | grep " " | awk -F' ' '{print $2}' > $ycoords
readarray -t xarr < $xcoords
readarray -t yarr < $ycoords
Mas não pode realmente sair daqui (acabou com 3,4 aninhados para loops).
Ou apenas armazenando um arquivo em uma matriz 2D. Mas como o bash não suporta matrizes 2D (eu sei que existem algumas maneiras de simulá-lo, mas não sei como usá-lo nesse caso)
readarray -t array < $geneFile #
Loops como esse seriam ótimos - é claro que, em vez de valores fixos, eu gostaria de obter algo como "$ {xarr [i]}".
for (( i = 0; i < nRows; i++ )); do
for (( j = 0; j < nColumns; j++ )); do
if [[ $i == 5 ]] && [[ $j == 5 ]]; then # of course instead of fixed value here I'd like to get coordinates values.
printf "O"
else
printf "."
fi
done
printf "\n"
done
Algum conselho / exemplo de como conseguir isso? Desde já, obrigado!