中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批实现TXT文本的某两行互换?
« [1] [2] »
作者:
标题: 如何用批实现TXT文本的某两行互换? 上一主题 | 下一主题
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 16 楼』:  



  Quote:
Originally posted by 无奈何 at 2006-11-7 11:09:
我也补个 sed 的,文件不要过于巨大。
sed -re :a -e "N;$!ba;s/([^\n]*)\n(.*)\n(.*)/\3\n\2\n\1/"
sed 下载:http://www.student.northpark.edu/pemente/s ...

斑竹的sed用法看不懂还,我复制回去查查资料先

2006-11-9 02:11
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 17 楼』:  


@echo off
setlocal ENABLEDELAYEDEXPANSION
    set file=a.txt
    for /f "delims=: tokens=1,*" %%i in ('findstr /n .* "%file%"') do set "%%i=%%j" & set num=%%i
    set "str=!%~1!"
    set "%~1=!%~2!"
    set "%~2=%str%"
    for /l %%i in (1,1,%num%) do if defined %%i (echo.!%%i!) else echo.
pause
利用上面的原理,实现3,-3并不难。
刚才写上面的东西的时候朋友喊我去帮忙做了系统的, 不知道有无bug,反正原理就那些了。

   此帖被 +4 点积分      点击查看详情   
评分人:【 redtek 分数: +4  时间:2006-11-9 11:32


2006-11-9 10:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 18 楼』:  

版主让行号直接模拟数组变量的方法真巧妙~:)
能看到这么好玩的内容简直太过瘾了~:)



    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-9 11:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 19 楼』:  

我在想 3742668 斑竹的代码在行中遇到 | 会不会执行~我试了好象不可以

2006-11-11 07:55
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 20 楼』:  



  Quote:
我在想 3742668 斑竹的代码在行中遇到 | 会不会执行~我试了好象不可以

有无加参数?
我这里测试正常。

2006-11-13 06:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
amao
中级用户





积分 316
发帖 152
注册 2006-6-18
状态 离线
『第 21 楼』:  

无奈何斑竹的代码在解决小文本时简洁利索;
vkill的代码在文本最后一行没有回车(换行)符时,会出错;
我也发一下我的代码吧,基于sed的

@echo off
sed -n "$!d;G;P" a.txt> temp.txt
sed "1d;$d" a.txt>> temp.txt
sed q a.txt>> temp.txt
type temp.txt
pause

它不管文本最后一行有无回车(换行)符都起作用

[ Last edited by amao on 2007-2-2 at 05:18 PM ]

2007-2-2 16:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 22 楼』:  

p能写成这样的要求,真不容易

2007-2-3 00:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 23 楼』:  



  Quote:
Originally posted by amao at 2007-2-2 16:33:
无奈何斑竹的代码在解决小文本时简洁利索;
vkill的代码在文本最后一行没有回车(换行)符时,会出错;
我也发一下我的代码吧,基于sed的

@ech ...

兄也喜欢sed ?呵呵

2007-2-3 05:06
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
amao
中级用户





积分 316
发帖 152
注册 2006-6-18
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by vkill at 2007-2-3 05:06:

兄也喜欢sed ?呵呵

正在努力学习中

2007-2-3 11:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ArchieYao
新手上路





积分 4
发帖 2
注册 2007-11-29
状态 离线
『第 25 楼』:  

顶上来问一下
如楼主给出的文本内容,如果我要互换含"张三" 和"小二"的行,怎么处理
想听听用sed的处理办法:)

2007-11-29 23:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: