perl - 将行上的成对集转换为列

标签 perl rows

是否有针对以下问题的 Perl 解决方案: 我有一个以下格式的文件

abcdef
abcdef
abcdef
abcdef

这只是文件的一个示例,实际扩展了几千列和几百行,并且由 1 和 0 组成

我希望我的输出如下

abababab
cdcdcdcd
efefefef

我在其他地方寻找答案,但只找到了将行直接转置为列的解决方案。在本例中,我想取出一行中的每一对并将它们转置到一列中。

非常感谢您的帮助,因为我几天来一直在解决这个问题

最佳答案

我认为我的解决方案将使用 Tie::File模块自动执行多次读取文件所需的缓冲。

use strict;
use warnings;

use Fcntl 'O_RDONLY';
use Tie::File;
use List::Util 'max';

tie my @data, 'Tie::File', 'test.dat', mode => O_RDONLY or die $!;

my $max = max map length, @data;

for (my $index = 0; $index < $max; $index += 2) {
  print substr $_, $index, 2 for @data;
  print "\n";
}

输出

abababab
cdcdcdcd
efefefef

关于perl - 将行上的成对集转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13584724/

相关文章:

regex - Perl 中 $ 到底匹配什么?

perl - 为什么SQLite提示我准备好的语句的语法?

linux - 如何在 Linux 服务器上找到 Perl 模块的位置?

mysql - 复制所有行并更改但更改 store_id

MySQL 多行

Mysql:通过选择每第 n 行需要帮助

perl - 我可以订购作为特征一部分加载的方法修饰符吗?

windows - 在 Perl 中设置区分大小写的 Windows 环境变量

php - 用 twig 在 html 中包裹多行

gnuplot - 如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和先前记录之间的差异