Извлеките содержимое файла в массив с помощью Bash
Как извлечь содержимое файла в массив в Bash по строкам.
Каждая строка задается элементом.
Я пробовал это:
declare -a array=(`cat "file name"`)
но он не сработал, он извлекает целые строки в элемент [0]
index
Ответы
Ответ 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
снова.