中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 大家好我记事本里的数字想进行换行处理
作者:
标题: 大家好我记事本里的数字想进行换行处理 上一主题 | 下一主题
jiehi007
新手上路





积分 5
发帖 5
注册 2009-9-1
状态 离线
『楼 主』:  大家好我记事本里的数字想进行换行处理

数字之间是 空格分隔的,其中包括一位数字,两位数字的 数据。
数据中的前2个数据后加一换行,之后的每隔16个数据换行一次
在记事本中是以上那种排列的:
90 44 6 5 6 4 6 4 6 5 5 5 6 4 6 5 6 4 6 16 6 16 6 16 6 16 6 16 6 15 6 16 6 16 6 5 6 16 6 5 6 16 6 4 6 4 6 4 6 5 5 16 6 5 6 16 6 5 6 16 6 16 6 16 6 16

我现在想把记事本中的数据这样排列:
90 44    第一次两个数据换行一次
6 5 6 4 6 4 6 5 5 5 6 4 6 5 6 4  以后的都是16个数据 换行一次
6 16 6 16 6 16 6 16 6 16 6 15 6 16 6 16
6 5 6 16 6 5 6 16 6 4 6 4 6 4 6 5
5 16 6 5 6 16 6 5 6 16 6 16 6 16 6 16

谢谢大家帮忙了

2009-12-23 22:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 2 楼』:  

使用sed转换空格为换行sed "s/ /\n/g" a.txt
用for提取文本到b.txt,输出时使用set/p。
同时使用if判断:
1,当行号等于2执行一次echo.。
2,当行号大于2执行:用行号除以16,当余数等于15时,使用一次echo.进行换行。

[ Last edited by Hanyeguxing on 2009-12-24 at 07:42 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-12-24 01:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 3 楼』:  

其实只用FR或者SED之类的就可以完成
fr -ric:"(\d\d \d\d)" -t:"\1\r\n" x.txt
fr -ric:"({\d+ }{16,16})" -t:"\1\r\n" x.txt

先贴上来,一会再测试看行不行。




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-12-24 07:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 4 楼』:  

经过测试,小改一下,可以了
fr -ric:"(\d\d \d\d) " -t:"\1\r\n" x.txt
fr -ric:"((\d+ ){16,16})" -t:"\1\r\n" x.txt




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-12-24 07:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jiehi007
新手上路





积分 5
发帖 5
注册 2009-9-1
状态 离线
『第 5 楼』:  谢谢各位帮忙,那些代码怎么使用呀?我不会用那个sed

最好使搞成一个批处理或者脚本什么的,直接双击就达到效果,是最方便的,再次麻烦各位大侠了

2009-12-24 10:05
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 6 楼』:  


@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set/p a=<a.txt
cd.>temp.txt
cd.>tmp.txt
for %%a in (%a%) do echo %%a>>temp.txt
for /f "tokens=1,2 delims=[]" %%a in ('type temp.txt^|find /v /n "."') do (if %%a==1 set b=%%b
set/a c=%%a%%16
if !c!==2 (echo !b! %%b>>tmp.txt
set b=)
if !c!==3 set b=%%b
if %%a gtr 3 (if !c! lss 2 set b=!b! %%b
if !c! gtr 3 set b=!b! %%b)
)
del temp.txt
自动从a.txt里读入1行 写到tmp.txt里

[ Last edited by 不得不爱 on 2009-12-24 at 20:11 ]



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2009-12-24 19:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mountvol
初级用户





积分 186
发帖 117
注册 2006-8-14
状态 离线
『第 7 楼』:  


On Error Resume Next
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFile1 = oFSO.OpenTextFile("a.txt")
Set oFile2 = oFSO.OpenTextFile("b.txt",2,True)
Do  Until oFile1.AtEndOfLine
    arr = Split(oFile1.ReadLine,Space(1))
    oFile2.WriteLine arr(0) & Space(1) & arr(1)
    For i = 2 To UBound(arr) - 1 Step 16
        str = ""
        For j = 0 To 15 '这里下标可能越界,所以前面要On Error
            str = str & arr(i + j) & Space(1)
        Next
        oFile2.WriteLine str        
    Next
    '下面这行前面加个'号可以不显示在b.txt中
    oFile2.WriteLine "*****************一行结束************"
Loop
    oFile1.Close
    oFile2.Close
Set oFile1 = Nothing
Set oFile2 = Nothing
Set oFSO = Nothing
保存为*.vbs到a.txt同目录下,会自动写到b.txt中,注意不要被覆盖了。

2009-12-24 20:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mountvol
初级用户





积分 186
发帖 117
注册 2006-8-14
状态 离线
『第 8 楼』:  


@echo off
for /f "delims=" %%i in (a.txt) do call :Sub %%i
pause
goto :eof

:Sub
set str=
set "flag=%~1"
if not defined flag goto :eof
for /l %%j in (1,1,2) do (call set "str=%%str%%%%~1 " & shift)
echo %str%
:Loop
set str=
set "flag=%~1"
if not defined flag goto :eof
for /l %%j in (1,1,16) do (call set "str=%%str%%%%~1 " & shift)
echo %str%
goto :Loop
用bat处理起来就怕一行的长度太大,另外处理特殊字符麻烦。

2009-12-24 20:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pdanniel66
初级用户





积分 68
发帖 64
注册 2009-5-23
状态 离线
『第 9 楼』:  

学习了,谢谢

2009-12-25 04:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jiehi007
新手上路





积分 5
发帖 5
注册 2009-9-1
状态 离线
『第 10 楼』:  测试都通过了,谢谢你们,佩服

圣诞节 快乐呀

2009-12-25 13:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: