标题: [已结]DOS下如何进行排序
[打印本页]
作者: wjcing
时间: 2008-10-13 12:23
标题: [已结]DOS下如何进行排序
如我有一个txt文件,内容是一行数字,如:10 02 03 06 05 07
我想把他按从小到大的顺序排序成:02 03 05 06 07 10输出到1.txt文件中.并把1到10中不包含上面那行的:01 04 08 09输出为2.txt.
请问如何做..谢谢..
[ Last edited by HAT on 2008-10-14 at 10:24 ]
作者: ceii
时间: 2008-10-13 21:45
有点难度,我动用了两个重量级工具sed和gawk才勉强完成第一项任务──单行排序。
sed "s/ /\n/g" a.txt | sort | gawk "{printf(\"%%s \",$0)}"
作者: HAT
时间: 2008-10-13 21:55
标题: Re 2楼
提供一个排序的方法:
@echo off
set str=10 02 03 06 05 07
for %%a in (%str%) do set .%%a=%%a
for /f "tokens=2 delims==" %%a in ('set .') do echo %%a
作者: ceii
时间: 2008-10-13 22:03
楼上排序结果是
02
03
05
06
07
10
但楼主要求是
02 03 05 06 07 10
作者: HAT
时间: 2008-10-13 22:07
标题: Re 4楼
提供一个合并行的方法:
@echo off
set str=10 02 03 06 05 07
for %%a in (%str%) do set .%%a=%%a
for /f "tokens=2 delims==" %%a in ('set .') do set /p =%%a <nul
作者: ceii
时间: 2008-10-13 22:26
哈,又学了几招,不愧是版主,坚持不用任何工具。
不过,要完成楼主的第二项任务应该借助工具了吧。
作者: HAT
时间: 2008-10-13 23:33
标题: Re 6楼
第二个应该比第一个简单吧,你先试着写一下?
作者: 23112656
时间: 2008-10-14 01:40
HAT大哥.
set .是什么意思啊?
作者: 26933062
时间: 2008-10-14 02:01
@echo off&setlocal enabledelayedexpansion
set str=10 02 03 06 05 07
for %%a in (%str%) do set .%%a=%%a
for /l %%a in (1 1 10) do (
set "str=00%%a"
set "str=!str:~-2!"
if defined .!str! (set num1=!num1! !str!) else set "num2=!num2! !str!"
)
>>1.txt echo !num1:~1!
>>2.txt echo !num2:~1!
作者: HAT
时间: 2008-10-14 09:33
标题: Re 8楼
set /?
SET command invoked with just a variable name, no equal sign or value
will display the value of all variables whose prefix matches the name
given to the SET command. For example:
SET P
would display all variables that begin with the letter 'P'
作者: wjcing
时间: 2008-10-14 09:38
哇..都是牛人...又学了N多东东..
谢谢大家了....非常感谢..
作者: HAT
时间: 2008-10-14 10:23
这样效率更高些
@echo off
setlocal enabledelayedexpansion
set str=10 02 03 06 05 07
for %%a in (%str%) do set .%%a=%%a
for %%a in (01 02 03 04 05 06 07 08 09 10) do (
if defined .%%a (
set num1=!num1! %%a
) else (
set num2=!num2! %%a
)
)
>>1.txt echo !num1:~1!
>>2.txt echo !num2:~1!
作者: wjcing
时间: 2008-10-14 10:24
好的..谢谢..hat版主..
作者: pkto
时间: 2009-1-15 01:06
答案有误,应该在txt文件里读取数字,再自动操作,而非在批处理中手工录入