Bash
如何將文本文件中的鍵和值保存到兩個單獨的數組中?
我有一個用於保存遊戲分數的文本文件,格式如下:
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 中完成。
假設您的輸入文件在換行符上有每個名稱/分數組合,這應該可以滿足您的需要:
while read line; do names+=($(echo "$line" | awk '{print $1}' | tr -d ':')) scores+=($(echo "$line" | awk '{print $2}')) done < "$INPUT_FILE"