#!/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 #### XX1X0X1 XXX1XX0 XX0XX1X XX1XXXX XX0X10X XX0010X XX110X1 XX00X11 XX110X0 XX01X10 XX1X0X1 XX00011 XX00X1X XX1XXXX XX010X1 XX10XX0 XXXX0XX XXXX1XX XX0011X XX111X1 XX0X10X XX1XXXX XX0XX1X XX00X1X XX110X1 XXXX1XX XXXX0XX XX0001X XX110X1 XX00X1X XX11XXX XX010X1 XX11XX0 XX00X1X XX11XX0 XX0X0X1 XX1XXXX XXX0XX0