ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать команду readarray для чтения 2D-массива в Bash

Как использовать команду readarray для чтения 2D-массива в Bash

Bash — это популярный язык сценариев оболочки, используемый в операционных системах Linux и Unix. Он предоставляет богатый набор команд и функций, упрощающих автоматизацию повторяющихся задач. «readarray» — одна из самых полезных команд в Bash. С помощью этой команды строки из файла могут быть прочитаны в двумерный массив. В этом посте мы рассмотрим, как читать строки из файла в 2D-массив с помощью команды Bash «readarray».

 

Использование «readarray» в Bash

Команда readarray считывает строки из файла или стандартного ввода и присваивает их массиву. Синтаксис использования readarray следующий:

readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] array

 

Опции, доступные для команды readarray:

 

Вот пример использования readarray для чтения строк из файла в 2D-массив, и для этого мы создали testfile.txt, содержимое которого:

1 2 3
4 5 6
7 8 9

 

Итак, вот полный скрипт bash, демонстрирующий использование команды readarray:

#!/bin/bash
# Считать строки из файла в массив
readarray -t lines < testfile.txt
# Объявить 2D-массив с 3 строками и 3 столбцами
declare -A array
# Перебрать строки и разбить каждую строку на элементы
for i in "${!lines[@]}"; do
  IFS=' ' read -r -a elements <<< "${lines[i]}"
  for j in "${!elements[@]}"; do
    if [[ -n "${elements[j]}" ]]; then
      array[$i,$j]=${elements[j]}
    fi
  done
done
# вывести масив
for ((i=0;i<3;i++)); do
  for ((j=0;j<3;j++)); do
    echo -n "${array[$i,$j]} "
  done
  echo
done

 

Здесь сначала мы объявили двумерный массив с именем «array», а затем использовал команду «readarray» для чтения строк из файла с именем «testfile.txt» в массив «lines». Затем код перебирает массив «lines» и разбивает каждую строку на элементы с помощью команд «IFS» и «read».

После этого он сохраняет элементы в массиве 2D-массива, а затем использует команду чтения для разделения каждой строки на элементы. Теперь каждый элемент присваивается соответствующему элементу в массиве «array» и, наконец, печатается содержимое массива «array» с использованием вложенных циклов for.

andreyex@Destroyer: -
File Edit View Search Terminal Help
andreyex@Destroyer:-$ bash bashfile.sh
2 3
4 5 6
7 8 9
andreyex@Destroyer:-$

 

Заключение

Команда readarray упрощает работу с большими объемами данных в сценариях Bash. Следуя примерам, представленным в этой статье, вы можете начать использовать readarray в своих сценариях Bash для чтения строк из файлов и преобразования их в двумерные массивы.

Exit mobile version