标题: [求助]如何用等号后面值排序问题
[打印本页]
作者: wjcing
时间: 2009-4-4 15:12
标题: [求助]如何用等号后面值排序问题
我有一个文件名为:1.txt 内容如下:
ad=6
dd=1
dc=16
bn=16
dcc=14
c=13
ddd=32
ba=118
re=67
cd=117
sss=30
我想按=号后面的值进行降序排序,排序后的获果如下:
ba=118
cd=117
re=67
ddd=32
sss=30
bn=16
dc=16
dcc=14
c=13
ad=6
dd=1
我用sort排序达不到我想要的获果,,请问用什么排序方法才能达这样的获果.
谢谢.
作者: netbenton
时间: 2009-4-4 20:59
@echo off
for /f "tokens=1,2 delims==" %%a in (1.txt) do (set/a n+=1&set cc=00000000%%b&call set #%%cc:~-8%%#%%n%%=%%a=%%b)
for /f "tokens=2,3 delims==" %%a in ('set #') do echo %%a=%%b
pause
Last edited by netbenton on 2009-4-4 at 19:09 ]
作者: wjcing
时间: 2009-4-5 00:54
牛啊..通过加零后,全部取后面8倍..并在后面保存其值..再输出,,,己达到了排序的获果,,,谢谢了..
但还有没有从大到小的排序呢..我想把大的值放在前面...谢谢..
作者: wjcing
时间: 2009-4-5 04:40
大家有没有什么好办法. .帮帮忙,,谢谢.
作者: s11ss
时间: 2009-4-5 04:53
sort /r降序
借用2L代码:
@echo off
for /f "tokens=1,2 delims==" %%a in (1.txt) do (set/a n+=1&set cc=00000000%%b&call set #%%cc:~-8%%#%%n%%=%%a=%%b)
for /f "tokens=2,3 delims==" %%a in ('set #^|sort /r') do echo %%a=%%b
pause
Last edited by s11ss on 2009-4-5 at 04:57 ]
作者: wjcing
时间: 2009-4-5 08:20
SORT
filename1] ]
filename3]
/+n 指定开始每个比较的字符号码 n。/+3 说明每个
比较应从每行的第三个字符开始。少于 n 个字符
的行排在其他行之前。按默认值,从每行的第一
个字符开始比较。
/L locale 用指定的区域设置替代系统默认区域设置。
""C"" 区域设置产生最快的排序顺序并且是当前的
唯一其他选择。排序总是不分大小写的。
/M kilobytes 指定用于排序的主内存量,单位为 KB。
最小内存量总是 160 KB。如果指定内存大小,
无论主内存的可用量是多少,指定的内存量
会全部用于排序。
要取得最佳性能,通常不指定内存大小。按默认
值,如果达到默认最大内存值,排序会一次完成
(非临时文件);否则,排序会分两次完成(没有
完全排序的数据存储在临时文件中);用于排序
和合并的内存量相等。如果输入和输出都是
文件, 默认最大内存量为可用主内存的 90%;
否则,为主内存的 45%。
/REC characters 指定记录中的最大字符数量
(默认值为 4096,最大值为 65535)。
/R 颠倒排序顺序,即,从 Z 到 A,再从 9 到 0。
filename1 指定要排序的文件。如果没有指定,
则排序标准输入。指定输入文件比将同一个文件
重定向为标准输入快。
/T
指定保留排序工作存储的目录路径,以防
主内存无法容纳数据。默认值是使用系统临时
目录。
/O
filename3 指定在哪个文件中储存经过排序的输入。
如果没有指定,数据会被写入标准输出。指定
输出文件比将标准输出重定向到同一个文件快。
汗...谢谢两位了...没发现还有R这个参数...郁闷中..