replace_match_and_next2.sh (942B)
#!/bin/bash function replace_match_and_next2() { PAT="$1" FILE="$2" if [ -z $PAT ]; then echo "A pattern is needed"; return 1; fi if [ -z $FILE ]; then echo "A file is needed"; return 1; fi sed -n -e '/'$PAT'/!p;: m' -e '//{' -e '$!{' -e 'n;n;b m' -e '}' -e'}' $FILE #Explanation for the random wanderer looking in here: #sed -n \ # -e '/'$PAT'/!p' print lines that do NOT match $PAT # -e ':m' define label "m" # -e '//{' if line matches $PAT again # -e ' $!{' and it's NOT the last line # -e ' n; n; b m' skip next two lines and go back to label "m" # -e ' }' end inner conditional # -e '}' end outer conditional #sometimes this can be useful for cutting parts from responses that are not needed #but have no control over }