Com a atividade que você está fazendo, como explicado na sua pergunta, parece que você precisa apenas de awk para todas essas coisas.
awk '$NF' infile*.txt > outfile.txt
O $NF refere-se à última palavra (significa uma palavra com espaços em branco ao redor) em cada linha em awk .
Embora a solução awk acima esteja lá, você pode usar as linhas para ler uma matriz e imprimir o último elemento dessa matriz com um índice negativo (bash 4.3 e acima).
arrayedline=( $line )
printf "%s\n", "${arrayedline[@]-1}"
Na versão mais antiga de bash , você pode usar a expressão no índice arrayedline[${#arrayedline[@]-1}] , que com substring um do comprimento da matriz ${#arrayedline[@]} , podemos obter o último elemento disso.
arrayedline=( $line )
printf "%s\n", "${arrayedline[${#arrayedline[@]}-1]}"
Ou você pode até usar o seguinte:
printf "%s\n", "${arrayedline[@]:(-1)}" #or
printf "%s\n", "${arrayedlne[@]: -1}"
Agora que o índice da matriz bash está começando em 0 .