Por que o Awk está bagunçando minhas variáveis de script?

1

Eu realmente não sei porque minhas variáveis estão ficando confusas, mas eu suspeito que a causa é awk. Eu resumi este problema em um pequeno script:

#!/usr/bin/env bash

QUE_FILE="/mnt/drive4-4/private/queue2.txt"
t1="$(cat "$QUE_FILE")"
echo "$t1"
echo "============"
echo "$t1" | while read i; do
    a1="$(echo "$i" | awk '{print $1}')"
    a2="$(echo "$i" | awk '{print $2}')"
    echo "a1 $a1 - a2 $a2"
    combined="$a1 $a2 11111111111"
    echo "combined $combined"
done

E a saída:

AA BB CC
DD EE
============
a1 AA - a2 BB
combined AA BB 11111111111
a1 DD - a2 EE
 11111111111EE

A última linha deve ser:

combined DD EE 11111111111
    
por Sepero 31.08.2018 / 14:54

1 resposta

3
while read A1 A2 REST; do echo -e "a1 $A1 - a2 $A2 \ncombined $A1 $A2 111111" ; done < /mnt/drive4-4/private/queue2.txt

A diferença é que awk imprime o último no campo de linha com 'fim de linha', enquanto o read AA BB CC salva os campos específicos sem 'fim de linha'. O REST salva o terceiro (se houver) e todos os próximos campos. Em echo -e , o \n divide a nova linha.

    
por 31.08.2018 / 15:43