计算文本文件中第 3 列或第 4 列单词超过 n 个字符的行数

计算文本文件中第 3 列或第 4 列单词超过 n 个字符的行数

我有一个大型文本文件,它有 4 列并且以空格分隔。

somelongword otherlongword abcde abc

我想计算第 3 列或第 4 列中的单词n长度超过字符的行数。最终我将查看许多文件,并且我想打印出所有文件中每行的总数。

我的直觉是我应该使用类似 awk 的东西,但我无法弄清楚做我想做的事情的语法。

答案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++;
}

它仅打印符合条件的行号和行,但让它打印您想要的内容不需要进行太多重写。

相关内容