如何将文本文件中的键和值保存到两个单独的数组中?

如何将文本文件中的键和值保存到两个单独的数组中?

我有一个用于保存游戏分数的文本文件,格式如下:

Name: score

使用 Bash 脚本,我尝试将名称放入一个数组中,将分数放入另一个数组中。我的第一种方法使用cut命令:

names=(cut -d: -f1 ./scores.txt)
scores=(cut -d: -f2 ./scores.txt)

但是,这种方法不太有效,因为它将所有名称和分数放在数组的第一个条目中,这很不方便,因为我想将前五个值放在不同的变量中,并使用他们。然后我尝试使用以下awk命令:

names=(awk -F: '{ print $0 }' ./scores.txt)
scores=(awk -F: '{ print $1 }' ./scores.txt)

这做了完全相同的事情。

有没有人对如何将所有解析的值放入自己的数组元素有任何建议,或者可能采用完全不同的方法来有效存储这些值?此外,由于某些原因,这必须在 Bash 中完成。

答案1

假设您的输入文件在换行符上包含每个名称/分数组合,这应该可以满足您的需要:

while read line; do 
    names+=($(echo "$line" | awk '{print $1}' | tr -d ':'))
    scores+=($(echo "$line" | awk '{print $2}'))
done < "$INPUT_FILE"

相关内容