Board logo

标题: [文本处理] 批处理如何按文本中每一行指定位置的数字大小排序 [打印本页]

作者: pengyou86    时间: 2008-8-23 00:26     标题: 批处理如何按文本中每一行指定位置的数字大小排序

本帖最后由 pcl_test 于 2016-11-3 20:24 编辑

378911 165.463
335860 180.220
361412 190.227
321484 205.334
340310 220.297
341376 185.225
380179 175.240
380179 475.240
380179 575.240
380179 775.240
txt文本里面有这样数字组合一行一行排序,我想按照第七位数字大小排序。  第6  7位之间有空格.  第七位我已经用红色标记了、谢谢麻烦高人给指点一下
作者: pusofalse    时间: 2008-8-23 00:28

sort/+7 a.txt
作者: batman    时间: 2008-8-23 08:35

楼上正解,同时也可以用for
  1. @echo off
  2. for /f "tokens=1,2 delims= " %%i in (a.txt) do set "_%%j=%%i %%j"
  3. for /f "tokens=2 delims==" %%i in ('set _') do echo %%i
  4. pause>nul
复制代码

作者: start    时间: 2008-8-23 10:15

batman 问问你哦
你那个代码里面的 set "_%%j=%%i %%j" 这句是什么意思呀`
怎么还有个_看不懂`可以解说下不`
作者: pusofalse    时间: 2008-8-23 11:06     标题: 回复 4楼 的帖子

这个_你就当是普通的变量名中的普通一部分就好了。
378911 165.463
set _%%j=%%i %%j
如果写为这样你就能明白了:
set _165.463=378911 165.463
作者: start    时间: 2008-8-23 12:09

上面那个代码我越看越糊涂了
%%j代表一个变量,_%%j 代表另一个变量,这个你说一下我明白了``
可set "_%%j=%%i %%j" 这个又是什么意思呀
还有'set _'这样用又是什么意思呀....晕乎乎在``
作者: pusofalse    时间: 2008-8-23 12:37

378911 165.463
如上,用for提取出的%%i是378911,%%j是165.463,这个能明白吧。
set _%%j=%%i %%j经过扩展就是:
set _165.463=378911 165.463
关于set _的作用,set/?的帮助信息的解释是显示所有以_ 打头的变量

在第一个for的下一行加上set _看下输出什么。
作者: itrui    时间: 2008-8-23 15:06

哈哈 又学到点东西




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2