Подтвердить что ты не робот

Извлеките содержимое файла в массив с помощью Bash

Как извлечь содержимое файла в массив в Bash по строкам. Каждая строка задается элементом.

Я пробовал это:

declare -a array=(`cat "file name"`)

но он не сработал, он извлекает целые строки в элемент [0] index

4b9b3361

Ответ 1

Вы можете использовать цикл для чтения каждой строки вашего файла и поместить его в массив

# Read the file in parameter and fill the array named "array"
getArray() {
    array=() # Create array
    while IFS= read -r line # Read a line
    do
        array+=("$line") # Append line to the array
    done < "$1"
}

getArray "file.txt"

Как использовать массив:

# Print the file (print each element of the array)
getArray "file.txt"
for e in "${array[@]}"
do
    echo "$e"
done

Ответ 2

Для bash версии 4 вы можете использовать:

readarray -t array < file.txt

Ответ 3

Это может сработать для вас (Bash):

OIFS="$IFS"; IFS=$'\n'; array=($(<file)); IFS="$OIFS"

Скопируйте $IFS, установите $IFS в новую строку, файл slurp в массив и reset $IFS снова.