Suponho que seu arquivo mibwithtraps
foi criado usando o Windows e, portanto, tem \r\n
finais de linha. Isso quebraria seu roteiro:
$ printf 'foo\r\n' | while read a; do
[[ "$a" == "foo" ]] && echo 'Matches!' || echo 'No match!';
done
No match!
Como você pode ver acima, o \r
está incluído na variável, portanto, ele não corresponde a menos que você inclua no teste:
$ printf 'foo\r\n' | while read a; do
[[ "$a" == "foo"$'\r' ]] && echo 'Matches!' || echo 'No match!';
done
Matches!
Isso é algo que você sempre precisa levar em conta ao lidar com arquivos criados em outro sistema operacional. Uma maneira simples de verificar é passar a primeira linha do seu arquivo por od -c
. Fazendo isso no texto do seu pastebin (precisa baixar o original, copiar / colar não vai funcionar), eu recebo:
$ head -1 dmvHuedP.asc | od -c
0000000 a d a p t e c . m i b , s C S
0000020 I S m a r t 1 , . 1 . 3 . 6 . 1
0000040 . 4 . 1 . 7 9 5 . 2 . 5 . 0 . 1
0000060 0 1 , C R I T I C A L , \r \n
0000076
Então, o \r
foi de fato o problema. Da próxima vez, você pode usar dos2unix
para removê-los:
$ head -1 dmvHuedP.asc | dos2unix | od -c
0000000 a d a p t e c . m i b , s C S
0000020 I S m a r t 1 , . 1 . 3 . 6 . 1
0000040 . 4 . 1 . 7 9 5 . 2 . 5 . 0 . 1
0000060 0 1 , C R I T I C A L , \n
0000075
Basta executar
dos2unix file > newfile
Como alternativa, você pode usar ferramentas padrão do UNIX:
tr -d '\r' < file > newfile
sed -i 's/\r//g' file