中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-20 03:28
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用批实现TXT文本的某两行互换? 查看 4,651 回复 24
16 发表于 2006-11-09 02:11 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
Originally posted by 无奈何 at 2006-11-7 11:09:
我也补个 sed 的,文件不要过于巨大。


sed -re :a -e "N;$!ba;s/(*)\n(.*)\n(.*)/\3\n\2\n\1/"


sed 下载:http://www.student.northpark.edu/pemente/s ...

斑竹的sed用法看不懂还,我复制回去查查资料先
17 发表于 2006-11-09 10:50 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线

@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,反正原理就那些了。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +4 2006-11-09 11:32
18 发表于 2006-11-09 11:47 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
版主让行号直接模拟数组变量的方法真巧妙~:)
能看到这么好玩的内容简直太过瘾了~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
19 发表于 2006-11-11 07:55 ·  中国 甘肃 甘南藏族自治州 合作市 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
我在想 3742668 斑竹的代码在行中遇到 | 会不会执行~我试了好象不可以
20 发表于 2006-11-13 06:40 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
我在想 3742668 斑竹的代码在行中遇到 | 会不会执行~我试了好象不可以

有无加参数?
我这里测试正常。
21 发表于 2007-02-02 16:33 ·  美国 北达科他州立大学
中级用户
★★
积分 316
发帖 152
注册 2006-06-18 13:01
20年会员
UID 57204
性别 男
状态 离线
无奈何斑竹的代码在解决小文本时简洁利索;
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 ]
22 发表于 2007-02-03 00:02 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
p能写成这样的要求,真不容易
23 发表于 2007-02-03 05:06 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
Originally posted by amao at 2007-2-2 16:33:
无奈何斑竹的代码在解决小文本时简洁利索;
vkill的代码在文本最后一行没有回车(换行)符时,会出错;
我也发一下我的代码吧,基于sed的

@ech ...

兄也喜欢sed ?呵呵
24 发表于 2007-02-03 11:06 ·  美国 缅因州
中级用户
★★
积分 316
发帖 152
注册 2006-06-18 13:01
20年会员
UID 57204
性别 男
状态 离线
Originally posted by vkill at 2007-2-3 05:06:

兄也喜欢sed ?呵呵

正在努力学习中
25 发表于 2007-11-29 23:22 ·  中国 广东 广州 广东金万邦科技投资有限公司(新一代数据中心)IDC机房(BGP)
新手上路
积分 4
发帖 2
注册 2007-11-29 21:28
18年会员
UID 104196
性别 男
状态 离线
顶上来问一下
如楼主给出的文本内容,如果我要互换含"张三" 和"小二"的行,怎么处理
想听听用sed的处理办法:)
论坛跳转: