Como salvar chaves e valores de um arquivo de texto em dois arrays separados?

1

Eu tenho um arquivo de texto para manter as pontuações do jogo, o formato é assim:

Name: score

Usando um script Bash, estou tentando colocar os nomes em uma matriz e as pontuações em outra. Minha primeira abordagem usou o comando cut :

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

No entanto, essa abordagem não funcionou muito, porque colocaria todos os nomes e pontuações na primeira entrada da matriz, o que é inconveniente, pois quero colocar os cinco principais valores em variáveis diferentes e fazer uma série de outras coisas com eles. Eu tentei usar o seguinte comando awk :

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

Isso fez exatamente a mesma coisa.

Alguém tem alguma sugestão sobre como colocar todos os valores analisados em seu próprio elemento de matriz ou, talvez, uma abordagem completamente diferente para armazenar eficientemente esses valores? Além disso, isso tem que ser feito no Bash por razões.

    
por LordHoratio 27.10.2017 / 23:44

1 resposta

0

Supondo que o seu arquivo de entrada tenha todos os nomes / combinações de pontuação em uma nova linha, isso deve fazer o que você precisa:

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