【发布时间】:2013-09-11 00:37:38
【问题描述】:
我的输入文件如下所示,我需要根据分隔符“~”对这个文件进行排序,即第 1 列按升序排列,第 5 列按降序排列。
010001~01001~JAN-00~009901~1~
010001~01001~JAN-00~009901~2~
010001~01001~JAN-00~009901~W~
010001~01001~JAN-00~009901~X~
010001~01001~JAN-00~009901~Z~
010001~01001~JAN-00~009901~i~
010001~01001~JAN-00~009901~j~
010001~01001~JAN-00~009901~m~
010001~01001~JAN-00~009901~n~
010001~01001~JAN-00~009901~o~
010001~01001~JAN-00~009901~p~
010001~01001~JAN-00~009901~q~
200407~20043~JUL-04~200307~P~
200407~20043~JUL-04~200307~V~
200407~20043~JUL-04~200307~k~
200408~20043~AUG-04~200308~P~
200408~20043~AUG-04~200308~V~
200408~20043~AUG-04~200308~k~
200409~20043~SEP-04~200309~P~
200409~20043~SEP-04~200309~V~
200409~20043~SEP-04~200309~k~
200410~20044~OCT-04~200310~P~
200410~20044~OCT-04~200310~V~
200410~20044~OCT-04~200310~k~
200411~20044~NOV-04~200311~P~
200411~20044~NOV-04~200311~V~
200411~20044~NOV-04~200311~k~
200412~20044~DEC-04~200312~P~
200412~20044~DEC-04~200312~V~
200412~20044~DEC-04~200312~k~
我尝试了下面的命令,但无法得到想要的结果
sort -t$'~' -k1 -k5r filename
我的结果文件应该如下所示
010001~01001~JAN-00~009901~q~
010001~01001~JAN-00~009901~p~
010001~01001~JAN-00~009901~o~
010001~01001~JAN-00~009901~n~
010001~01001~JAN-00~009901~m~
010001~01001~JAN-00~009901~j~
010001~01001~JAN-00~009901~i~
010001~01001~JAN-00~009901~Z~
010001~01001~JAN-00~009901~X~
010001~01001~JAN-00~009901~W~
010001~01001~JAN-00~009901~2~
010001~01001~JAN-00~009901~1~
200407~20043~JUL-04~200307~k~
200407~20043~JUL-04~200307~V~
200407~20043~JUL-04~200307~P~
200408~20043~AUG-04~200308~k~
200408~20043~AUG-04~200308~V~
200408~20043~AUG-04~200308~P~
200409~20043~SEP-04~200309~k~
200409~20043~SEP-04~200309~V~
200409~20043~SEP-04~200309~P~
200410~20044~OCT-04~200310~k~
200410~20044~OCT-04~200310~V~
200410~20044~OCT-04~200310~P~
200411~20044~NOV-04~200311~k~
200411~20044~NOV-04~200311~V~
200411~20044~NOV-04~200311~P~
200412~20044~DEC-04~200312~k~
200412~20044~DEC-04~200312~V~
200412~20044~DEC-04~200312~P~
谁能帮我解决这个问题。
【问题讨论】:
-
为什么
q,p..在最后一列的Z之前? -
@Kent:区分大小写的 ASCII(反向)顺序;小写字母的数字大于大写字母,所以这是正确的。