我有一个大型文本文件,它有 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++;
}
它仅打印符合条件的行号和行,但让它打印您想要的内容不需要进行太多重写。