Perl:修剪多行记录

标签 perl

我需要读入多行记录并将它们修剪到恰好 40 行。然后 将它们填充为 45 行。它们可能有 70 多行。这些记录需要 最终变成 45 行。

记录分隔符是以模式/^#matchee/开头的行。

我假设您将 $/设置为#matchee。

{
    $/ = "#matchee";

    while (<>) {
        # I need to print first 40
        # lines of each record then
        # pad to 45 with delimiter as
        # last line.
    }
}

记录示例

REDUNDANCY DEPARTMENT
Anonymous Ave

Item 1
Item 2



<bunch of blank lines>
#matchee

最佳答案

这是我的解决方案...

#! /usr/bin/env perl
use strict;
use warnings;

{
    $/ = "#matchee";

    while (my @line = split "\n", <> ) {

    # print first 40 lines of record
        for my $counter (0..39) {
             print($line[$counter] . "\n");
        }

        # pad record with four extra blank lines
        # (last record already ends with a newline)
        print "\n" x 4;
    }
}

+1 用于使用 $/= "#matchee";

这不太正确...第一个记录有 45 行,第二个记录有 44 行。

关于Perl:修剪多行记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847850/

相关文章:

perl - 在 Perl 中并行读取 2 个文件时的性能

linux - 比较两个文件并在匹配的单词后打印 N 行

perl - 一个文件中有多个 Perl 包?

linux - 如何解释 si_status 值

perl - 为什么 Moose 的构建器采用字符串值?

database - 使用 Perl 比较来自 2 个不同数据库的大约 700,000 行的更快方法是什么?

c++ - 从 linux 命令行用另一个替换整个段落

php - 是否有用于生成迁移 SQL (postgres) 文件的脚本?

perl - 按字典顺序排序

perl - 尝试使用 fast-cgi 和 lighttpd 运行 perl 脚本,但文件只是下载