Bash - это популярный язык сценариев оболочки, используемый в операционных системах Linux и Unix. Он предоставляет богатый набор команд и функций, облегчающих автоматизацию повторяющихся задач. Команда 'readarray' - одна из наиболее полезных команд в Bash. С помощью этой команды строки из файла могут быть считаны в двумерный массив. В этой статье мы рассмотрим, как с помощью команды Bash "readarray" считать строки из файла в двумерный массив.
Использование команды 'readarray' в Bash
Команда 'readarray' считывает строки из файла или стандартного ввода и присваивает их массиву. Синтаксис команды 'readarray' следующий:
1 | readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] array |
Для команды 'readarray' доступны следующие опции:
- '-d DELIM': Устанавливает разделитель, используемый при разбиении строк на элементы массива; по умолчанию разделителем является символ новой строки.
- '-n COUNT': Задает максимальное количество строк, считываемых в массив.
- '-O ORIGIN': Устанавливает начальный индекс массива.
- '-s COUNT': Указывает количество строк, которые необходимо пропустить перед чтением массива.
- '-t': Удаляет символ новой строки из каждой строки, считанной в массив.
Приведем пример использования программы 'readarray' для чтения строк из файла в двумерный массив. Для этого я создал файл testfile.txt, содержимое которого имеет вид:
1 2 3 | 1 2 3 4 5 6 7 8 9 |
Итак, вот полный bash-скрипт, демонстрирующий использование команды 'readarray':
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/bin/bash # Чтение строк из файла в массив readarray -t lines < testfile.txt # Объявить двумерный массив с 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 # Print the array for ((i=0;i<3;i++)); do for ((j=0;j<3;j++)); do echo -n "${array[$i,$j]} " done echo done |
Здесь сначала был объявлен двумерный массив 'array', а затем с помощью команды 'readarray' в массив 'lines' были считаны строки из файла 'testfile.txt'. Далее код выполняет итерации по массиву 'lines' и разбивает каждую строку на элементы с помощью команд 'IFS' и 'read'.
После этого он сохраняет элементы в двумерном массиве 'array', а затем с помощью команды read разбивает каждую строку на элементы. Теперь каждому элементу присваивается соответствующий элемент в массиве 'array' и, наконец, выводится содержимое массива 'array' с помощью вложенных циклов for.
Заключение
Команда 'readarray' позволяет легко манипулировать большими объемами данных в сценариях Bash. Следуя примерам, приведенным в этой статье, вы сможете начать использовать команду 'readarray' в своих сценариях Bash для чтения строк из файлов и их обработки в двумерные массивы.