由于制表分隔符

时间:2017-04-12 08:52:16

标签: bash sorting

我必须使用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,但它不会改变任何内容。有什么建议吗?

1 个答案:

答案 0 :(得分: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

(这是预期的结果)。 但是,对不起,没有解释。对我来说,语言环境总是导致无法解释的行为。