[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

原文件a.txt:
1 2 3
a b c

希望得到的结果:
1 a
2 b
3 c

Perl?这个,你问错地方了把?

TOP

这里不就是Perl版块吗,不在这里,那该去哪儿呀?!
我发现这个论坛里面思维诡异的人还真是不少呢!

TOP

这里不就是Perl版块吗,不在这里,那该去哪儿呀?!
我发现这个论坛里面思维诡异的人还真是不少呢!
DAIC 发表于 2011-6-11 09:46

那个人可能刚来…… 不管……  做题ing

TOP

那个人可能刚来…… 不管……  做题ing
523066680 发表于 2011-6-11 10:41

恩,我也刚来。

TOP

本帖最后由 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

TOP

恩,我也刚来。
Demon 发表于 2011-6-11 10:51

你怎么现在才来

TOP

6# 523066680


你这样处理之后就变成1列了,不是我希望的结果。

TOP

这个好像是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
复制代码

TOP

9# sxw


非常感谢!
看来你们地球上除了那一两个人之外,还是有其他人会Perl的的,我很欣慰。

TOP

本帖最后由 523066680 于 2011-6-11 15:22 编辑
6# 523066680


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

哈 ,叠加的时候增加一个空格,就两列了。看样子这位是纯粹出题,不投入啊。

TOP

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

我看根本就是什么都不懂嘛

TOP

本帖最后由 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>;
复制代码

TOP

呀哈,作为一名外贸人员,这点业余消遣,别人认为懂不懂无所谓啦~
你月薪多少啊?能人,很能说会道啊。 你跟bccn那个挑衅的,没法比。
523066680 发表于 2011-6-11 15:39

你先搞清楚我在说谁好么。

TOP

11# 523066680


我是初学者,别跟我一般见识呀。
不过你的方法不能处理这种情况:
1 1 1
22 22 22

TOP

返回列表