# Perl Substitution local usage pattern replacement modifiers usage="$( cat <<EOF usage: $0 [-option ...] [--] pattern replacement [file ...] options: -g match globally -i ignore case -m ^ and $ match the start and the end of a line -s . matches newline -x ignore whitespace and comments EOF )" while getopts ':igmxe::' opt; do case "$opt" in (i) modifiers="${modifiers}i" ;; (g) modifiers="${modifiers}g" ;; (m) modifiers="${modifiers}m" ;; (x) modifiers="${modifiers}x" ;; (e) modifiers="${modifiers}e" ;; (:) print "$0: option requires an argument: $OPTARG" >&2 print "$usage" >&2 return 1 ;; ([?]) print "$0: unknown option: $OPTARG" >&2 print "$usage" >&2 return 1 ;; esac done shift $(( $OPTIND - 1 )) if (( $# < 2 )); then print "$usage" >&2 return 1 fi pattern="$1" replacement="$2" repeat 2 shift perl -i'.orig' -n -l -e "s/${pattern//\//\\/}/${replacement//\//\\/}/${modifiers}; print" "$@"