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

Kak Ispol Zovat Komandu Readarray Dla Ctenia 2d Massiva V Bash



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

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

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







чтение массива [ -d ПОДЕЛИТЬСЯ ] [ -n СЧИТАТЬ ] [ - ПРОИСХОЖДЕНИЕ ] [ -s СЧИТАТЬ ] [ ] множество


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



'-d ПОДЕЛИТЬСЯ': Устанавливает разделитель, используемый при разбиении строк на элементы массива, и по умолчанию разделителем является символ новой строки.



‘-n СЧИТАТЬ’: Задает максимальное количество строк для чтения в массив.





'-О ПРОИСХОЖДЕНИЕ' : устанавливает начальный индекс массива.

‘-s СЧИТАТЬ’: Указывает количество строк, которые необходимо пропустить перед чтением в массив.



‘-т’: Удаляет завершающий символ новой строки из каждой строки, считываемой в массив.

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

1 2 3
4 5 6
7 8 9


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

#!/бин/баш
# Читаем строки из файла в массив
чтение массива линии < тестовый файл.txt
# Объявить двумерный массив с 3 строками и 3 столбцами
объявить множество
# Перебираем строки и разбиваем каждую строку на элементы
для я в ' ${!линий[@]} ' ; делать
ИФС '=' ' ' читать элементы <<< ' ${строки[я]} '
для Дж в ' ${!элементы[@]} ' ; делать
если [ [ ' ${элементы[j]} ' ] ] ; затем
множество [ $ я , $j ] '=' ${элементы[j]}
быть
сделанный
сделанный
# Распечатать массив
для ( ( я '=' 0 < 3 ;я++ ) ) ; делать
для ( ( Дж '=' 0 < 3 ;j++ ) ) ; делать
эхо ' ${массив[$i,$j]} '
сделанный
эхо
сделанный


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

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

Заключение

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