#!/bin/bash

set -e -u

help_and_exit () {
    cat >&2 <<EOF
Usage: $0 [-t RULETYPE] PATTERN [FILE]...

For example: $0 -t REMOVE 'Prs.*(Pl3|VFIN)' sme.dis.cg3
EOF
    exit 1
}

printprev=0
type=
OPTIND=1
while getopts "t:h?" opt; do
    case ${opt} in
        t) type=${OPTARG} ;;
        '?'|h) help_and_exit ;;
    esac
done
shift $((OPTIND-1))

[[ $# -eq 0 ]] && help_and_exit
needle=$1
shift
#files="$@"

cgkws="SUBSTITUTE|IFF|ADDCOHORT|REMCOHORT|COPY|MOVE|SWITCH|EXTERNAL|DELIMIT|MAP|ADD|UNMAP|SELECT|REMOVE|SETPARENT|SETCHILD|ADDRELATION|REMRELATION|SETRELATION|ADDRELATIONS|REMRELATIONS|SETRELATIONS|SETVARIABLE|REMVARIABLE|APPEND"

awk -v needle="${needle}" -v type="${type}" -v cgkws="${cgkws}" \
    'BEGIN{ if(type=="") type=cgkws }
     $0~type{ p=1 }
     p{ rule=rule"\n"$0}
     /;/ && p && rule~needle { print rule }
     /;/{ p=0; rule="" }' \
    "$@"