找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 48149|回复: 23

[问题求助] Perl怎样把一个文件中的内容行列互置?

[复制链接]
发表于 2011-6-11 01:32:17 | 显示全部楼层 |阅读模式
原文件a.txt:
1 2 3
a b c

希望得到的结果:
1 a
2 b
3 c
发表于 2011-6-11 02:42:50 | 显示全部楼层
Perl?这个,你问错地方了把?
 楼主| 发表于 2011-6-11 09:46:47 | 显示全部楼层
这里不就是Perl版块吗,不在这里,那该去哪儿呀?!
我发现这个论坛里面思维诡异的人还真是不少呢!
发表于 2011-6-11 10:41:31 | 显示全部楼层
这里不就是Perl版块吗,不在这里,那该去哪儿呀?!
我发现这个论坛里面思维诡异的人还真是不少呢!
DAIC 发表于 2011-6-11 09:46

那个人可能刚来…… 不管……  做题ing
发表于 2011-6-11 10:51:28 | 显示全部楼层
那个人可能刚来…… 不管……  做题ing
523066680 发表于 2011-6-11 10:41

恩,我也刚来。
发表于 2011-6-11 10:51:30 | 显示全部楼层
本帖最后由 523066680 于 2011-6-11 11:06 编辑

空格要切分吗 ,我按逐字符处理了

  1. open READ,"<src.txt";
  2. foreach (<READ>) {
  3.         $n=0;
  4.         for $i (0..(length($_)-1)) {
  5.                 $arr[$n++].=substr($_,$i,1);
  6.         }
  7. }
  8. close READ;
  9. foreach (@arr) {
  10.         print "$_ \n";
  11. }
  12. <STDIN>;
复制代码
输出结果
1a

2b

3c
发表于 2011-6-11 10:52:34 | 显示全部楼层
恩,我也刚来。
Demon 发表于 2011-6-11 10:51

你怎么现在才来
 楼主| 发表于 2011-6-11 13:54:33 | 显示全部楼层
6# 523066680


你这样处理之后就变成1列了,不是我希望的结果。
发表于 2011-6-11 15:02:26 | 显示全部楼层
这个好像是chinaunix上的,有人问过,贴过来了(我忘了原帖在哪了,抱歉)

  1. my @matrix;
  2. my $max_len = 0;
  3. while(<DATA>){
  4.   chomp;
  5.    my @fields = split / /, $_;
  6.    my $len = @fields;
  7.   $max_len = $max_len > $len ? $max_len : $len;
  8.   push @matrix, [@fields];
  9. }
  10. for my $col (0..$max_len - 1){
  11.   for my $line (@matrix){
  12.     print $line->[$col]." "|| ' ';
  13.   }
  14.   print "\n";
  15. }
  16. __DATA__
  17. 1 2 3
  18. a b c
复制代码
 楼主| 发表于 2011-6-11 15:14:36 | 显示全部楼层
9# sxw


非常感谢!
看来你们地球上除了那一两个人之外,还是有其他人会Perl的的,我很欣慰。
发表于 2011-6-11 15:21:39 | 显示全部楼层
本帖最后由 523066680 于 2011-6-11 15:22 编辑
6# 523066680


你这样处理之后就变成1列了,不是我希望的结果。
DAIC 发表于 2011-6-11 13:54

哈 ,叠加的时候增加一个空格,就两列了。看样子这位是纯粹出题,不投入啊。
发表于 2011-6-11 15:25:29 | 显示全部楼层
哈 ,叠加的时候增加一个空格,就两列了。看样子这位是纯粹出题,不投入啊。
523066680 发表于 2011-6-11 15:21

我看根本就是什么都不懂嘛
发表于 2011-6-11 15:39:15 | 显示全部楼层
本帖最后由 523066680 于 2011-6-11 16:54 编辑
我看根本就是什么都不懂嘛
Demon 发表于 2011-6-11 15:25

呀哈,作为一名外贸人员,这点业余消遣,别人认为懂不懂无所谓啦~
(这句替换掉了。他人引用的内容无法替换,就成为心浮气躁的证据吧。)

  1. open READ,"<src.txt";
  2. foreach (<READ>) {
  3.         $n=0;
  4.         for $i (0..(length($_)-1)) {
  5.                 if (substr($_,$i,1) ne " ") {
  6.                         $arr[$n++].=substr($_,$i,1)." ";
  7.                 }
  8.         }
  9. }
  10. close READ;
  11. foreach (@arr) {
  12.         print "$_\n";
  13. }
  14. <STDIN>;
复制代码
发表于 2011-6-11 15:46:05 | 显示全部楼层
呀哈,作为一名外贸人员,这点业余消遣,别人认为懂不懂无所谓啦~
你月薪多少啊?能人,很能说会道啊。 你跟bccn那个挑衅的,没法比。
523066680 发表于 2011-6-11 15:39

你先搞清楚我在说谁好么。
 楼主| 发表于 2011-6-11 16:40:02 | 显示全部楼层
11# 523066680


我是初学者,别跟我一般见识呀。
不过你的方法不能处理这种情况:
1 1 1
22 22 22
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:01 , Processed in 0.021908 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表