中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-25 08:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助:矩阵转置和文件提取合并问题 查看 1,285 回复 8
楼 主 求助:矩阵转置和文件提取合并问题 发表于 2010-12-07 23:27 ·  中国 河南 新乡 联通
初级用户
★★
积分 96
发帖 83
注册 2009-06-04 00:54
17年会员
UID 146648
性别 男
来自 信阳
状态 离线
求助:下面两个问题可以用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
2 发表于 2010-12-08 00:00 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
转换:
@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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
740011611 +2 2010-12-08 00:07
3 发表于 2010-12-08 00:09 ·  中国 河南 新乡 联通
初级用户
★★
积分 96
发帖 83
注册 2009-06-04 00:54
17年会员
UID 146648
性别 男
来自 信阳
状态 离线
谢谢Hanyeguxing
很好地解决了我的问题
不知道gawk能实现不?
echo %%a!#%%b!好像结果连在一块了echo %%a !#%%b!
呵呵

[ Last edited by 740011611 on 2010-12-8 at 00:13 ]
4 发表于 2010-12-08 00:18 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
5 发表于 2010-12-08 13:12 ·  中国 河南 新乡 联通
初级用户
★★
积分 96
发帖 83
注册 2009-06-04 00:54
17年会员
UID 146648
性别 男
来自 信阳
状态 离线
nothing 呵呵
想追问一下如果是汉字怎么转置,比如把下面的诗转置?

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


转成

君 . .
不 . .
见 . .
将 黄
进 河
酒 之
| 水
李 天
白 上











[ Last edited by 740011611 on 2010-12-8 at 13:16 ]
6 发表于 2010-12-08 14:43 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
文本要求:不能使用空格,只能使用汉字空白符“ ”前对齐
   将进酒—李白
君不见,黄河之水天上来,奔流到海不复回。
君不见,高堂明镜悲白发,朝如青丝暮成雪。
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
烹羊宰牛且为乐,会须一饮三百杯。
岑夫子,丹丘生,将进酒,杯莫停。
与君歌一曲,请君为我侧耳听:
钟鼓馔玉不足贵,但愿长醉不复醒。
古来圣贤皆寂寞,唯有饮者留其名。
陈王昔时宴平乐,斗酒十千恣欢谑。
主人何为言少钱,径须沽取对君酌。
五花马,千金裘,呼儿将出换美酒,
与尔同销万古愁。
批处理代码:
@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 ]
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
740011611 +2 2010-12-08 17:46
sfcctv +2 2010-12-08 20:03
7 发表于 2010-12-08 17:48 ·  中国 河南 新乡 联通
初级用户
★★
积分 96
发帖 83
注册 2009-06-04 00:54
17年会员
UID 146648
性别 男
来自 信阳
状态 离线
多谢Hanyeguxing!又解决了我的一个问题,想了很长时间没有头绪。
想用gawk却不太熟悉。多谢
8 发表于 2010-12-08 19:36 ·  中国 福建 泉州 电信
初级用户
积分 38
发帖 38
注册 2010-11-17 22:11
15年会员
UID 177740
性别 男
状态 离线
Hanyeguxing真的好厉害啊,好像什么问题都能解决。
9 发表于 2010-12-08 20:06 ·  中国 湖北 天门 电信
中级用户
★★
积分 208
发帖 135
注册 2009-09-12 12:00
16年会员
UID 151902
来自 离恨天
状态 离线
Hanyeguxing
你真是太历害了。
论坛跳转: