Vaibhav Takalkar
Vaibhav Takalkar

Reputation: 11

count by an element in perl

I have a file like:

fan      apple banana orange mango
cooler   apple orange banana mango
cooler   apple orange banana mango
cooler   apple orange banana mango
fan      apple banana orange mango
fan      apple banana orange mango
cooler   apple orange banana mango
fan      apple banana orange mango

now when I am going line by line I want to count at the moment when Fan comes and need to increase that count with every fan. like

count 1
fan      apple banana orange mango
cooler   apple orange banana mango
cooler   apple orange banana mango
cooler   apple orange banana mango
count 2
fan      apple banana orange mango
count 3
fan      apple banana orange mango
cooler   apple orange banana mango
count 4
fan      apple banana orange mango

This is what I want in output. Help is appreciated...Thank you

Upvotes: 1

Views: 73

Answers (2)

Gilles Quénot
Gilles Quénot

Reputation: 184975

In a one-liner :

perl -lane 'BEGIN{$c=1}; $F[0] eq "fan" && do{print "count ".$c++ }; print' file

Upvotes: 0

Ilmari Karonen
Ilmari Karonen

Reputation: 50328

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

my $n = 0;
while (<>) {
    print "count ", ++$n, "\n" if /^fan\b/;
    print;
}

or as a one-liner using Perl 5.10+:

perl -pE 'say "count ", ++$n if /^fan\b/'

Upvotes: 1

Related Questions