Bash: rellena una matriz 2D desde el archivo

Sé que probablemente sea algo fácil, pero estoy luchando muy duro con esto.

Descripción del problema: tengo un archivo de texto con coordenadas en formato:
1 2
3 7 ...
donde la primera columna == 'x' y la segunda columna == 'y' coordinan.
Ahora quiero llenar una matriz 2D de tamaño N x M usando estas coordenadas del archivo imprimiendo 'X' para los puntos que se especifican en el archivo y '.' de otra manera.

Ejemplo: array [1] [2] = 'X', array [3] [7] = 'X', array [0] [1] = '.'

Hasta ahora he intentado:

separando columnas x, y y almacenándolas en matrices 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

Pero realmente no se puede mover desde aquí (terminó con 3,4 no anidados para bucles).

O simplemente almacenando un archivo en una matriz 2D. Pero dado que bash no admite matrices 2D (sé que hay algunas formas de simularlo, pero no sé cómo usarlo en este caso)

readarray -t array < $geneFile # 

Bucles como este serían geniales, por supuesto, en lugar de valores fijos, me gustaría obtener 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 

¿Algún consejo / ejemplo de cómo lograrlo? ¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta