匹配和拆分.txt文件中的特定行

时间:2017-03-22 10:50:30

标签: perl

我正在寻找简洁的Perl等价物(在脚本而不是单行内使用),以及我在bash / awk中做的一些事情:

Count=$(awk '/reads/ && ! seen {print $1; seen=1}' < input.txt)

通过指定的.txt文件进行搜索,该文件包含多行,包括以下格式的一些行:

8523723 reads; of these:
1256265 reads; of these:
2418091 reads; of these:

Printing&#39; 8523723&#39;并忽略其余的匹配行(因为我只希望对第一个匹配的实例进行操作)。

其次:

Count2=$(awk '/paired/ {sum+=$1} END{print sum}' < input.txt)

25 paired; of these:
15 paired; of these:

这会在每条匹配的行上创建一个总数,打印40。

1 个答案:

答案 0 :(得分:1)

第一个是:

while (<>) {
  if (/reads/) {
    print;
    last;
  }
}

第二个是:

my $total = 0;
while (<>) {
  if (/(\d+) paired/) {
    $total += $1;
  }
}
say $total;
毫无疑问,你可以为他们两个打高尔夫球。但这些版本是可读的: - )