2017-04-12 17 views
1

我使用sort此行進行排序:錯誤排序輸出由於製表分離

$ echo -e "mariadb-server-10.0\t2\nmariadb-server\t2\nmariadb-server-core-10.0\t2" | sort 
mariadb-server-10.0 2 
mariadb-server 2 
mariadb-server-core-10.0 2 

,但我不明白爲什麼它不工作,而排序:完美

$ echo -e "mariadb-server-10.0\nmariadb-server\nmariadb-server-core-10.0" | sort 
mariadb-server 
mariadb-server-10.0 
mariadb-server-core-10.0 

作品:

由於字段被製表符分隔,我試過sort -t$'\t' -k1,但它不會改變任何東西。任何建議?

回答

2

一個建議,是:

LC_ALL=C sort -d <<EOF 
mariadb-server-10.0 2017-04-11 19:09:26.934255687 +0200 
mariadb-server 2017-04-11 19:09:46.814225367 +0200 
mariadb-server-core-10.0 2017-04-11 19:08:43.304322172 +0200 
EOF 

給出

mariadb-server 2017-04-11 19:09:46.814225367 +0200 
mariadb-server-10.0 2017-04-11 19:09:26.934255687 +0200 
mariadb-server-core-10.0 2017-04-11 19:08:43.304322172 +0200 

(這是預期的結果)。 但是,我很抱歉,沒有解釋。對我而言,語言環境一直導致無法解釋的行爲。其實這就是爲什麼呢!

+0

謝謝 – Sigmun