我有一个文件months.txt,文字如下:
JAN, MAR, DEC, FEB, JUN, APR
在bash中,我编写了以下代码行:
cat months.txt | sort -M
我假设这会输出文本文件,按月排序。但是输出未排序。我使用排序不正确吗?
答案 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
输出中没有空格。