#!/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="" }' \ "$@"