中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [已解决]如何将上下行互换 上一主题 | 下一主题
shw1395
初级用户





积分 39
发帖 21
注册 2007-10-27
状态 离线
『楼 主』:  [已解决]如何将上下行互换

[img]UploadFile/2008-1/400camelandoasis.jpg[/img]
Camel and Oasis

[img]UploadFile/2008-1/400-2-5.jpg[/img]
Lion Hunter

改成

Camel and Oasis
[img]UploadFile/2008-1/400camelandoasis.jpg[/img]

Lion Hunter
[img]UploadFile/2008-1/400-2-5.jpg[/img]

[[i] Last edited by shw1395 on 2008-6-1 at 03:07 PM [/i]]

2008-3-28 01:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 2 楼』:  


sed "/^$\|^\[b\]/d" test.txt|sed "N;s/\(.*\)\n\(.*\)/\2\n\1/;G"
[ Last edited by abcd on 2008-3-28 at 02:37 AM ]

2008-3-28 01:54
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
shw1395
初级用户





积分 39
发帖 21
注册 2007-10-27
状态 离线
『第 3 楼』:  

可以用cmd的for吗?另外要忽略[b]开头的行。sed我从没用过,看了你的回帖,我正在看http://sed.sourceforge.net

2008-3-28 02:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 4 楼』:  


@echo off&setlocal enabledelayedexpansion
set num=0
set str1=
set str2=
for /f "tokens=*" %%i in ('findstr /v "^\[b\]" test.txt') do (
   set /a num+=1,t=num%%2
   if !t!==0 (
    set str2=%%i
    call,echo %%str2%%
    call,echo %%str1%%
    echo.
   ) else (
    set str1=%%i
   )
)
pause>nul


2008-3-28 02:44
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
shw1395
初级用户





积分 39
发帖 21
注册 2007-10-27
状态 离线
『第 5 楼』:  

确实有效,在这里十分感谢abcd的答复。
其实我完全的效果是这样:
[b]Animals and Birds Gallery[/b]

[img]UploadFile/2008-1/nest.jpg[/img]
Nest

[img]UploadFile/2004-4/2003762261664813.jpg[/img]

[img]UploadFile/2004-4/20025221141571.jpg[/img]

只需处理这一部分的格式:
[img]UploadFile/2008-1/nest.jpg[/img]
Nest
[code]@echo off&setlocal enabledelayedexpansion
set num=0
set str1=
set str2=
for /f "tokens=*" %%i in (test.txt) do (
   set /a num+=1,t=num%%2
   if !t!==0 (
    set str2=%%i
    call,echo %%str2%%>>testend.txt
    call,echo %%str1%%>>testend.txt
    echo.>>testend.txt
   ) else (
    set str1=%%i
   )
)
pause>nul[/code]
好像还差一点点:(,看了for的帮助,原来FOR /F "eol=后只能有一个字符,无法用FOR /F "eol=[b]。也许用EmEditor的正则也是可以替换的,可惜我不会。
再次感谢abcd,他的回复我已经十分满意了。谢谢!

2008-3-28 16:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 6 楼』:  

以后提问题就完整的提出来

要不然,别人回答累,自己也累。

2008-3-28 16:50
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复

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


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



论坛跳转: