#!/usr/bin/env perl use strict; use warnings; my %seen; while ( my $line = ) { if ( $line =~ /([X01]{7})$/ ) { # line matched, so print the pattern if we've not seen it before my $result = $1; next if $seen{$result}++; print "$result\n"; } else { # the line did not match, so clear our "seen" patterns %seen = (); } } __DATA__ Pattern 0 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX00X1X Time 200: force_all_pis = XX1X0X1 Time 400: force_all_pis = XXX1XX0 Time 600: force_all_pis = XXX1XX0 Time 800: force_all_pis = XXX1XX0 Time 940: measure_all_pos =1 Pattern 1 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX0XX1X Time 200: force_all_pis = XX1XXXX Time 400: force_all_pis = XX0X10X Time 600: force_all_pis = XX1XXXX Time 800: force_all_pis = XX0010X Time 1000: force_all_pis =XX110X1 Time 1140: measure_all_pos =1 Pattern 2 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX00X11 Time 200: force_all_pis = XX110X0 Time 340: measure_all_pos =1 Pattern 3 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX01X10 Time 200: force_all_pis = XX1X0X1 Time 400: force_all_pis = XX00011 Time 600: force_all_pis = XX1X0X1 Time 740: measure_all_pos =0 Pattern 4 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX00X1X Time 200: force_all_pis = XX1XXXX Time 400: force_all_pis = XX010X1 Time 600: force_all_pis = XX10XX0 Time 740: measure_all_pos =0 Pattern 5 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XXXX0XX Time 200: force_all_pis = XXXX1XX Time 400: force_all_pis = XX0011X Time 600: force_all_pis = XX111X1 Time 740: measure_all_pos =1 Pattern 6 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX0X10X Time 200: force_all_pis = XX1XXXX Time 400: force_all_pis = XX0XX1X Time 600: force_all_pis = XX1XXXX Time 800: force_all_pis = XX00X1X Time 1000: force_all_pis =XX110X1 Time 1140: measure_all_pos =0 Pattern 7 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XXXX1XX Time 200: force_all_pis = XXXX0XX Time 400: force_all_pis = XX0001X Time 600: force_all_pis = XX110X1 Time 740: measure_all_pos =0 Pattern 8 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX00X1X Time 200: force_all_pis = XX11XXX Time 400: force_all_pis = XX010X1 Time 600: force_all_pis = XX11XX0 Time 740: measure_all_pos =1 Pattern 9 (full_sequential) Time 0: period = 100 Time 0: force_all_pis = XX00X1X Time 200: force_all_pis = XX11XX0 Time 400: force_all_pis = XX0X0X1 Time 600: force_all_pis = XX1XXXX Time 800: force_all_pis = XXX0XX0 Time 940: measure_all_pos =0