Ketika saya melihat hasil SELECT
dengan MySQL Workbench, itu benar dengan satu tunggal \
max@host 10:13:58: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
> SELECT
> DISTINCT i.filesourceregexp
> FROM db.ImportLogFiles i'
+------------------------------------------------+
| filesourceregexp |
+------------------------------------------------+
| ^[0-9]{8}_1062355673_merge_google_pbn\.csv$ |
| ^[0-9]{8}_8026062435_merge_google_pbn\.csv$ |
| ^[0-9]{8}_1062355673_store_visits_report\.csv$ |
+------------------------------------------------+
max@host 10:14:10: ~$ mysql -h db-master.domain.local -uuser -ppw db -e '
SELECT
DISTINCT i.filesourceregexp
FROM db.ImportLogFiles i' | tail -n +2
^[0-9]{8}_1062355673_merge_google_pbn\\.csv$
^[0-9]{8}_8026062435_merge_google_pbn\\.csv$
^[0-9]{8}_1062355673_store_visits_report\\.csv$
max@host 10:14:19: ~$
Saya memiliki opsi ini di my.cnf
:
[client]
host = db-master
user = user
password = pass
default-character-set=utf8
Mengapa piping hasilnya melalui tail
perubahan output / string? (perhatikan ganda \
).
mysql ... | head
ataumysql ... | grep 8
?head
dangrep 802
jangan juga menggandakan * \ *max@host 10:50:48: ~$ mysql -V mysql Ver 14.14 Distrib 5.5.55, for debian-linux-gnu (x86_64) using readline 6.3
tail --version
tail (GNU coreutils) 8.23
tetapi saya memiliki masalah yang sama dengan grep atau kepalaGNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
danuname -a
hasilnya:Linux host 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2+deb8u2 (2017-06-26) x86_64 GNU/Linux
Jawaban:
Bukan
tail
, ini perpipaannya.mysql
menggunakan tabular dengan format output tinju ASCII ketika stdout adalah perangkat terminal, ketika itu ditujukan untuk pengguna, dan kembali ke format skrip ketika itu tidak, seperti ketika itu pipa atau file biasa.Anda akan melihat format berbeda yang sama dengan
atau
Lihat juga
-r
/--raw
,-s
/--silent
,-B
/--batch
,-N
/--skip-column-names
/--column-names=0
,-H
/--html
,-t
/--table
... yang memengaruhi format output.Jika Anda ingin output tabular bahkan ketika output tidak pergi ke perangkat terminal, tambahkan
-t
opsi:Tetapi jika intinya adalah untuk menghapus baris header, cukup gunakan
-N
, dengan atau tanpa-t
.Di sini untuk mendapatkan nilai-nilai dari basis data se-mentah mungkin dan tanpa header, saya akan menggunakan:
Itu adalah:
ps
dengan meneruskan kredensial dalam file sebagai gantinya (seperti Andamy.cnf
) dengan--defaults-extra-file
.--raw
untuk menghindari melarikan diri . Dengan asumsi nilai tidak mengandung baris baru karena jika tidak, output tidak dapat diproses secara andal.--skip-column-names
untuk menghapus baris header.sumber
-r --column-names=0
memecahkan masalah saya, tankls
output dimasukkan ke dalam kolom ketika output masuk ke terminal, tetapi merupakan satu kolom saat menulis ke pipa atau file.