2014-05-25 45 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可能模棱兩可通過啓動「排序 - 版本」,並按照在文本文件中指定某種絕對路徑。