|
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 |
|
|
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 ]
|
批处理之家 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 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
|
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 |
|
|
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 ]
|
批处理之家 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 |
|
|
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 |
|