Board logo

标题: [已解决]用sort能否实现文件数值按大小排序 [打印本页]

作者: suntb     时间: 2007-5-17 20:12    标题: [已解决]用sort能否实现文件数值按大小排序
RT
假设文件test.txt中为纯数字的数据,有如下数字
25
1
9
385
87
195876
如果用sort test.txt命令排序只能得到如下结果
1
195876
25
385
87
9
也就是说sort进行排序时是先按首位字符排序,那么如果按照平时习惯是按数值大小排序应该如何处理,也就是结果应该如下
1
9
25
87
385
195876


Last edited by suntb on 2007-5-18 at 10:05 AM ]

作者: suntb     时间: 2007-5-17 20:48
没有人帮忙,查看论坛中的帖子,好象用sort无法实现

Last edited by suntb on 2007-5-18 at 11:11 AM ]

作者: vkill     时间: 2007-5-22 21:02
我也在想这个问题,也没有答案

作者: lxmxn     时间: 2007-5-23 00:59
多搜索一下,记得以前有过类似的讨论的。

作者: youxi01     时间: 2007-5-23 01:19
试试以下代码:

::code by youxi01@cn-dos.net
::使用格式:命令行中,输入:
::
@echo off
setlocal enabledelayedexpansion

if "%2"=="" (
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
) else (
for /f %%i in (%1) do (
call :CheckNum %%i Res
echo !Res!#%%i)
goto :eof)

pause>nul

:CheckNum num Res
set/a Res=0
for /l %%i in (0 1 1000) do (
set "var=%~1"
set tmp=!var:~%%i,1!
if "!tmp!"=="" goto :eof
set/a Res+=1)

使用格式:
示例,某名为 “test.txt” 文件中有数字如下:

25
1
9
385
87
195876

在CMD 下测试结果如下:

F:\>paixu.bat test.txt
1
9
25
87
385
195876


不过郁闷的是,在测试时,我将这个P处理文件名改成了sort.bat,然后问题就来了,害我重启了两次,后来终于明白.....

作者: MLQX     时间: 2008-5-3 11:13    标题: 请高手支一声
::code by youxi01@cn-dos.net
::使用格式:命令行中,输入:
::
@echo off
setlocal enabledelayedexpansion

if "%2"=="" (
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
) else (
for /f %%i in (%1) do (
call :CheckNum %%i Res
echo !Res!#%%i)
goto :eof)

pause>nul

:CheckNum num Res
set/a Res=0
for /l %%i in (0 1 1000) do (
set "var=%~1"
set tmp=!var:~%%i,1!
if "!tmp!"=="" goto :eof
set/a Res+=1


请问:
for /f "tokens=2 delims=#" %%i in ('"%~0" %1 OK^|sort') do echo %%i
)
其中为什么要加OK俩字母???????

作者: pkto     时间: 2008-12-27 13:51
呵呵,如何把这个排序结果输入到一个新的文本文件里呢?请教一下呵