【发布时间】:2013-12-16 04:34:50
【问题描述】:
如何将文件内容逐行提取到 Bash 中的数组中。 每行都设置为一个元素。
我试过了:
declare -a array=(`cat "file name"`)
但它不起作用,它将整行提取到[0]索引元素中
【问题讨论】:
-
通常你不需要那个。你能说出你为什么想要那个吗?
如何将文件内容逐行提取到 Bash 中的数组中。 每行都设置为一个元素。
我试过了:
declare -a array=(`cat "file name"`)
但它不起作用,它将整行提取到[0]索引元素中
【问题讨论】:
对于 bash 版本 4,您可以使用:
readarray -t array < file.txt
【讨论】:
readarray 是 mapfile 的同义词。
您可以使用循环读取文件的每一行并将其放入数组中
# 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
【讨论】:
这可能对你有用(Bash):
OIFS="$IFS"; IFS=$'\n'; array=($(<file)); IFS="$OIFS"
复制$IFS,将$IFS 设置为换行符,将文件插入数组并再次重置$IFS。
【讨论】: