使用sort -M按月排序

时间:2014-06-19 00:17:28

标签: bash sorting unix cat utilities

我有一个文件months.txt,文字如下:

JAN, MAR, DEC, FEB, JUN, APR

在bash中,我编写了以下代码行:

cat months.txt | sort -M

我假设这会输出文本文件,按月排序。但是输出未排序。我使用排序不正确吗?

3 个答案:

答案 0 :(得分:2)

sort对文字的进行排序,而您只提供了一行。

如果您的文件如下所示:

JAN
MAR
DEC
FEB
JUN
APR

...你得到了你期望的结果。

顺便提一下,您的命令是useless use of cat:命令

sort -M months.txt

做同样的事情。

答案 1 :(得分:1)

您需要将逗号分隔列表分成单独的行,对其进行排序,然后将其转换回来:

tr ',' '\n' < months.txt | sort -M | awk 'NR > 1 { printf(",") } {printf("%s", $0)} END { print "" }'

答案 2 :(得分:1)

另一种观点:

tr -s ', ' '\n\n' < months.txt | sort -M | paste -sd,
JAN,FEB,MAR,APR,JUN,DEC

输出中没有空格。