我有一个用于保存游戏分数的文本文件,格式如下:
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"