#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11101749 use warnings; # "the precise syntax of this configuration file is unknown" <-- FIXME my $s_in = <<'GROK'; # comment line VIEW View1 RECORD "ABC" FIELD ( FIELD "TYPEFROM" FIELD "REGION" FIELD "RUBBISH" ) INTERVAL 600 SECONDS END_VIEW VIEW View2 RECORD "HELLO" FIELD ( FIELD "TYPETO" FIELD "REGION" FIELD "RUBBISH" ) INTERVAL 700 SECONDS END_VIEW # random line 1 VIEW View3 RECORD "XYZ" FIELD ( FIELD "FLD1" FIELD "Region" # random line 2 FIELD "Rubbish" ) INTERVAL 800 SECONDS END_VIEW # random line 3 GROK print $s_in; print STDERR $s_in =~ s/^VIEW\b.*?^END_VIEW\b/ my $block = $&; $block =~ m{^\h*RECORD\h+"(ABC|XYZ)"}im ? $block =~ s!^\h*FIELD\s+\K"REGION"!"LOCATION"!gimr =~ s!^\h*FIELD\s+\K"RUBBISH"!"TRASH"!gimr : $block /gemsr;