123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #
- # Provides a grep-like pattern search.
- #
- # Authors:
- # Sorin Ionescu <sorin.ionescu@gmail.com>
- #
- # function prep {
- local usage pattern modifiers invert
- usage="$(
- cat <<EOF
- usage: $0 [-option ...] [--] pattern [file ...]
- options:
- -i ignore case
- -m ^ and $ match the start and the end of a line
- -s . matches newline
- -v invert match
- -x ignore whitespace and comments
- EOF
- )"
- while getopts ':imsxv' opt; do
- case "$opt" in
- (i) modifiers="${modifiers}i" ;;
- (m) modifiers="${modifiers}m" ;;
- (s) modifiers="${modifiers}s" ;;
- (x) modifiers="${modifiers}x" ;;
- (v) invert="yes" ;;
- (:)
- 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 (( $# < 1 )); then
- print "$usage" >&2
- return 1
- fi
- pattern="$1"
- shift
- perl -n -l -e "print if ${invert:+not} m/${pattern//\//\\/}/${modifiers}" "$@"
- # }
|