如何逐行在Bash中将文件内容提取到数组中。 每一行都设置为一个元素。
我试过这个:
declare -a array=(`cat "file name"`)
但它不起作用,它将整行提取到[0]
索引元素
答案 0 :(得分:29)
对于bash版本4,您可以使用:
readarray -t array < file.txt
答案 1 :(得分:23)
您可以使用循环读取文件的每一行并将其放入数组
# 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 :(得分:2)
这可能适合你(Bash):
OIFS="$IFS"; IFS=$'\n'; array=($(<file)); IFS="$OIFS"
复制$IFS
,将$IFS
设置为换行符,将文件隐藏到数组中,然后重新设置$IFS
。