2014-05-25 43 views
0

这是的text.txtShell排序按月

APR 
AUG 
DEC 
FEB 
JAN 
JUL 
JUN 
MAR 
MAY 
NOV 
OCT 
SEP 

我曾尝试

sort -k1M text.txt 
sort -M test.txt 

这还不能排序的一个月像

Jan 
Feb 
Mar 
bla bla bla... 

任何错误我命令? 使用例如感谢你在文本文件中

+1

哪个平台是你的工作上?你的'sort'是否支持'-M'?它的工作确定在Mac OS X 10.9.3用'的/ usr/bin中/ sort',这是GNU'sort'(5.93版;几乎没有最新版本)。它可能适用于其他更新版本的GNU'sort'。你是否设置了LANG或LC_ALL或类似的环境变量? –

+0

无法重现。你使用的是什么版本的“排序”? –

+0

完成RedHat 2.6.32-431.el6.x86_64,排序(GNU的coreutils)8.4 – YOHO

回答

1

能否重现此问题与GNU排序8.21和默认的时间区域比英语不同,这可能是你的情况。

首先,检查日期/时间值的当前设置:

[email protected]:~$ locale | grep -i time 

LC_TIME="it_IT.UTF-8" 

其实我的不是英语,所以预期与英语月份名称sort -m将无法​​正常工作:

[email protected]:~$ cat /tmp/mesi 

AUG 
JAN 
JUL 
FEB 


[email protected]:~$ sort -M /tmp/mesi 

AUG 
JAN 
JUL 
FEB 

解决方案是暂时将LC_TIME值更改为英文版本:

[email protected]:~$ LC_TIME="en_EN.UTF-8" sort -M /tmp/mesi 

JAN 
FEB 
JUL 
AUG 

不必担心弄乱的东西,因为在该区域设置变量被改变了命令执行后,其原始值会自动恢复:

[email protected]:~$ locale | grep -i time 

LC_TIME="it_IT.UTF-8" 

有一个愉快的一天

+0

感谢队友:)它是有用的 – YOHO

1

1,请检查不可见(非打印)符号

cat -v your_text_file 

od -xc your_text_file|head 

2.Exclude可能模棱两可通过启动“排序 - 版本”,并按照在文本文件中指定某种绝对路径。