Bash — это популярный язык сценариев оболочки, используемый в операционных системах Linux и Unix. Он предоставляет богатый набор команд и функций, упрощающих автоматизацию повторяющихся задач. «readarray» — одна из самых полезных команд в Bash. С помощью этой команды строки из файла могут быть прочитаны в двумерный массив. В этом посте мы рассмотрим, как читать строки из файла в 2D-массив с помощью команды Bash «readarray».
Использование readarray в Bash
Команда readarray считывает строки из файла или стандартного ввода и присваивает их массиву. Синтаксис использования readarray следующий:
чтение массива [ -d ПОДЕЛИТЬСЯ ] [ -n СЧИТАТЬ ] [ - ПРОИСХОЖДЕНИЕ ] [ -s СЧИТАТЬ ] [ -т ] множество
Опции, доступные для команды readarray:
'-d ПОДЕЛИТЬСЯ': Устанавливает разделитель, используемый при разбиении строк на элементы массива, и по умолчанию разделителем является символ новой строки.
‘-n СЧИТАТЬ’: Задает максимальное количество строк для чтения в массив.
'-О ПРОИСХОЖДЕНИЕ' : устанавливает начальный индекс массива.
‘-s СЧИТАТЬ’: Указывает количество строк, которые необходимо пропустить перед чтением в массив.
‘-т’: Удаляет завершающий символ новой строки из каждой строки, считываемой в массив.
Вот пример использования readarray для чтения строк из файла в 2D-массив, и для этого я создал тестовый файл.txt содержание которого:
1 2 34 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 для чтения строк из файлов и преобразования их в двумерные массивы.