中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:矩阵转置和文件提取合并问题
作者:
标题: 求助:矩阵转置和文件提取合并问题 上一主题 | 下一主题
740011611
初级用户





积分 96
发帖 83
注册 2009-6-4
来自 信阳
状态 离线
『楼 主』:  求助:矩阵转置和文件提取合并问题

求助:下面两个问题可以用gawk或者sed解决吗?批处理也行。没搜到相关的帖子...
--------------------
a) 矩阵转置
--------------------
有矩阵如下

1 2 3 4
5 6 7 8
a b c d
e f g h

转换成
1 5 a f
2 6 b f
3 7 c g
4 8 d h

--------------------
b)合并文件
--------------------
一文件如下

1 2 3
4 5 6
7 8 9

另一文件中有
1
3
5

合并成
1 2 3 1
4 5 6 3
7 8 9 5

2010-12-7 23:27
查看资料  发送邮件  发短消息 网志  OICQ (740011611)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


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

转换:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (1.txt) do (
    set n=0
    for %%b in (%%a) do (
        set/a n+=1
        for %%c in (!n!) do set #%%c=!#%%c! %%b
))
(for /l %%a in (1,1,%n%) do echo!#%%a!)>3.txt
合并:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (1.txt) do (
    set/a n+=1
    set #!n!=%%a
)
(for /f "delims=" %%a in (2.txt) do (
    set/a m+=1
    for %%b in (!m!) do echo %%a !#%%b!
))>3.txt
也可以:
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1* delims=:" %%a in ('findstr /n .* 1.txt') do set #%%a=%%b
(for /f "tokens=1* delims=:" %%a in ('findstr /n .* 2.txt') do echo %%b !#%%a!)>3.txt
[ Last edited by Hanyeguxing on 2010-12-8 at 00:20 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 740011611 分数: +2  时间:2010-12-8 00:07




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-8 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
740011611
初级用户





积分 96
发帖 83
注册 2009-6-4
来自 信阳
状态 离线
『第 3 楼』:  

谢谢Hanyeguxing
很好地解决了我的问题
不知道gawk能实现不?
echo %%a!#%%b!好像结果连在一块了echo %%a !#%%b!
呵呵

[ Last edited by 740011611 on 2010-12-8 at 00:13 ]

2010-12-8 00:09
查看资料  发送邮件  发短消息 网志  OICQ (740011611)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


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

没注意到,不好意思



批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-8 00:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
740011611
初级用户





积分 96
发帖 83
注册 2009-6-4
来自 信阳
状态 离线
『第 5 楼』:  

nothing 呵呵
想追问一下如果是汉字怎么转置,比如把下面的诗转置?

         将进酒—李白
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我侧耳听:
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,唯有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,
与尔同销万古愁。


转成

    君 . .                                       
     不 . .
     见 . .
将  黄
进  河
酒  之
|    水
李  天
白  上
    来
    ,
    奔
    流
    到
    海
    不
    复
    回
        。

[ Last edited by 740011611 on 2010-12-8 at 13:16 ]

2010-12-8 13:12
查看资料  发送邮件  发短消息 网志  OICQ (740011611)  编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


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

文本要求:不能使用空格,只能使用汉字空白符“ ”前对齐
   将进酒—李白
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我侧耳听:
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,唯有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,
与尔同销万古愁。
批处理代码:
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (1.txt) do call:han "%%a"
for /l %%a in (1,1,%Ye%) do set Xing= !Xing!
for /f "delims=" %%a in (1.txt) do (
        set Han=%%a%Xing%
        for /l %%b in (0,1,%Ye%) do set #%%b=!#%%b! !Han:~%%b,1!
)
set/a Ye-=1
(for /l %%a in (0,1,%Ye%) do echo !#%%a!)>3.txt
exit
:han
set Han=%~1
if defined Ye (set Gu=%Ye%) else set Gu=0
:ye
if "!Han:~%Gu%,1!"=="" (
        if "%Ye%"=="" set Ye=%Gu%
        if %Gu% gtr %Ye% set Ye=%Gu%
        goto:eof
)
set/a Gu+=1
goto:ye
if defined Ye (set Gu=%Ye%) else set Gu=0用于加快子循环速度的
for /l %%a in (1,1,%Ye%) do set Xing= !Xing!用于补位,变量为连续的汉字空白符


如果不想空格分隔,则把
set #%%b=!#%%b! !Han:~%%b,1!
改成
set #%%b=!#%%b!!Han:~%%b,1!
如果要从右向左显示,则改成
set #%%b=!Han:~%%b,1! !#%%b!

set #%%b=!Han:~%%b,1!!#%%b!

[ Last edited by Hanyeguxing on 2010-12-8 at 15:23 ]

   此帖被 +4 点积分    点击查看详情   
评分人:【 740011611 分数: +2  时间:2010-12-8 17:46
评分人:【 sfcctv 分数: +2  时间:2010-12-8 20:03




批处理之家 http://bbs.bathome.net/forum-5-1.html
2010-12-8 14:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
740011611
初级用户





积分 96
发帖 83
注册 2009-6-4
来自 信阳
状态 离线
『第 7 楼』:  

多谢Hanyeguxing!又解决了我的一个问题,想了很长时间没有头绪。
想用gawk却不太熟悉。多谢

2010-12-8 17:48
查看资料  发送邮件  发短消息 网志  OICQ (740011611)  编辑帖子  回复  引用回复
ajian
初级用户





积分 38
发帖 38
注册 2010-11-17
状态 离线
『第 8 楼』:  

Hanyeguxing真的好厉害啊,好像什么问题都能解决。

2010-12-8 19:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sfcctv
中级用户





积分 208
发帖 135
注册 2009-9-12
来自 离恨天
状态 离线
『第 9 楼』:  

Hanyeguxing
你真是太历害了。

2010-12-8 20:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: