У меня большой текстовый файл, который имеет 4 столбца и разделен пробелом.

одно длинное слово другое длинное слово abcde abc

Я хотел бы посчитать количество строк, в которых слово в 3-м или 4-м столбце длиннее n символов. Со временем у меня будет много файлов для просмотра, и я хотел бы распечатать по одному общему числу для каждой строки во всех файлах.

Моя интуиция заключается в том, что я должен использовать что-то вроде awk, но я не могу понять синтаксис, чтобы делать то, что я хочу.

1 ответ1

1

Ваша интуиция верна. Вероятно, есть гораздо более простой способ сделать это через sed/awk ... но я решил, что пришло время освежить свой Perl и взломал этот кусок вместе:

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

my $n = 5;
my $linenum = 1;

while (<>)
{
    my @cols = split(/\s+/);
    if ((length($cols[2]) > $n) || (length($cols[3]) > $n))
    {
        print "Line $linenum: $_";
    }
    $linenum++;
}

Он печатает только номер строки и строку, которые соответствуют критериям, но для печати того, что вы хотите, не нужно много переписывать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .