Как удалить строки в большом текстовом файле, которые имеют меньше 500 в конце

Насколько вы старались в Perl?

Изменить Вот более быстрый метод. Он разбивает файл и печатает файлы деталей.

use strict;
use warnings;

my $count = 1;

open (my $file, '<', 'source.txt') or die "Can't open source.txt: $!";

for (split /(?=^.*\d+[^\S\n]*of[^\S\n]*\d+[^\S\n]*DOCUMENTS)/m, join('',<$file>))
{
    if ( s/^.*(\d+)\s*of\s*\d+\s*DOCUMENTS.*(\n|$)//m )
    {
        open (my $part, '>', "Part$1_$count.txt") 
            or die "Can't open Part$1_$count for output: $!";
        print $part $_;
        close ($part);
        $count++;
    }
}
close ($file);

Это метод по строкам:

use strict;
use warnings;

open (my $masterfile, '<', 'yourfilename.txt') or die "Can't open yourfilename.txt: $!";

my $count = 1;
my $fh;

while (<$masterfile>) {
    if ( /(?<!\d)(\d+)\s*of\s*\d+\s*DOCUMENTS/ ) {
        defined $fh and close ($fh);
        open ($fh, '>', "Part$1_$count.txt") or die "Can't open Part$1_$count for  output: $!";
        $count++;
        next;
    }
    defined $fh and print $fh $_;
}
defined $fh and close ($fh);
close ($masterfile);
0
задан Oskar Erb-rutherford 28 February 2019 в 22:46
поделиться

1 ответ

Используя sed в системах Mac, Linux или UNIX, вы можете удалить строку с:

sed '/Char: [0-4][0-9][0-9]$/d' < inputfile.txt > outputfile.txt

Это соответствует всем числам 0-499, где это последний символ (фиксируется с помощью $ ) на линии.

0
ответ дан danblack 28 February 2019 в 22:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: