Board logo

标题: [文本处理] [已解决]批处理怎样打乱指定文本文件里边的行序? [打印本页]

作者: lj84831253    时间: 2010-5-19 13:55     标题: [已解决]批处理怎样打乱指定文本文件里边的行序?

比如1.txt里边的内容为:
5d6f4ghdg
452156dfg561d65
士大夫4顺丰
dg5df6565d
5dg645d465
撒旦52士大夫
然后将其打乱输出到2.txt,要求输出的行不能有重复的,可以吗?
作者: hanyeguxing    时间: 2010-5-19 14:42

完全打乱顺序:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /F "delims=" %%i in (1.txt) do call:n&for %%j in (#!n!) do set "%%j=%%i"
  3. (for /F "tokens=1* delims==" %%i in ('set #') do echo.%%j)>2.txt
  4. exit
  5. :n
  6. set n=%random%
  7. if defined #%n% goto:n
复制代码

作者: Batcher    时间: 2010-5-19 15:31

如何用批处理使文本内容乱序?
http://bbs.bathome.net/thread-5806-1-1.html
作者: CUer    时间: 2010-5-24 20:36

  1. gawk "{a[$0]}END{for(i in a)print i}" 1.txt >2.txt
复制代码

作者: fakker    时间: 2010-8-15 17:04     标题: 楼上的,这个gawk开头的代码正确吗?

这个gawk开头的代码正确吗?批处理没真正从头开始完全学习过,DOS命令倒是会一些!
作者: fakker    时间: 2010-8-15 17:10     标题: hanyeguxing兄,这个代码不能去掉重复的行

原帖由 hanyeguxing 于 2010-5-19 14:42 发表
完全打乱顺序:@echo off&setlocal enabledelayedexpansion
for /F "delims=" %%i in (1.txt) do call:n&for %%j in (#!n!) do set "%%j=%%i"
(for /F "tokens=1* delims==" %%i in ('set #') do echo.%%j)>2.txt
...


已测试,能打乱行序,不能过滤重复的,有谁知道怎么在打乱行序的同时去掉重复的行?

[ 本帖最后由 fakker 于 2010-8-15 17:30 编辑 ]
作者: Batcher    时间: 2010-8-15 18:10     标题: 回复 5楼 的帖子

去下载一个gawk试试吧
http://bbs.bathome.net/thread-3981-1-1.html




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