Não é tail , é o encanamento.
mysql usa uma tabulação com o formato de saída de boxe ASCII quando seu stdout é um dispositivo terminal, quando é destinado a um usuário, e é revertido para um formato script quando não é, como quando é um pipe ou um arquivo normal.
Você veria o mesmo formato diferente com
mysql... | cat
ou
mysql > file; cat file
Veja também o -r / --raw , -s / --silent , -B / --batch , -N / --skip-column-names / --column-names=0 , -H / --html , -t / --table ... que afetam o formato de saída.
Se você quiser a saída tabular mesmo quando a saída não for para um dispositivo de terminal, adicione a opção -t :
mysql -t ... | tail -n +2
Mas se o objetivo for remover a linha de cabeçalho, use apenas -N , com ou sem -t .
Aqui para obter os valores do banco de dados o mais bruto possível e sem cabeçalho, eu usaria:
mysql --defaults-extra-file=/some/protected/file/with/credentials \
--batch --raw --skip-column-names -e 'select...' database
Isto é:
- não exponha a senha na saída de
pspassando as credenciais em um arquivo (como vocêmy.cnf) com--defaults-extra-file. - use o modo lote para evitar a saída tabular (e reconheça o fato de que estamos, na verdade, em lotes, o que pode ter outras implicações).
-
--rawpara evitar o escapar . Supondo que os valores não contenham novas linhas, caso contrário, a saída não pode ser processada de forma confiável. -
--skip-column-namespara remover a linha de cabeçalho.