12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/usr/bin/bash
- # Substitute a string in many files. By Serge van den Boom, 20020826
- if [ $# -eq 0 ]; then
- {
- echo "subst: substitute a string in a lot of files."
- echo "By Serge van den Boom, 20020826"
- echo "Usage: subst <pattern> <file> [...]"
- echo -n "'pattern' should be a pattern in the form used by sed, "
- echo " like 's/old/new/g'."
- } 1>&2
- exit 1
- fi
- PAT="$1"
- SEP="${PAT:1:1}"
- GREPPAT="${PAT:2}"
- eval GREPPAT='${GREPPAT%%'$SEP'*}'
- shift
- while [ "$#" -gt "0" ]; do
- FILE="$1"
- echo -n "$FILE: "
- grep -q "$GREPPAT" < "$FILE"
- EXITVAL=$?
- case $EXITVAL in
- 0) # Match found
- ;;
- 1) # No match found
- echo "Nothing to do."
- shift
- continue
- ;;
- *)
- echo "ERROR"
- echo "Error: grep returned exit value ${EXITVAL}. Aborted." 1>&2
- exit 1
- esac
- TEMPFILE="${FILE}.patchtree.$$.tmp"
- mv -- "$FILE" "$TEMPFILE"
- sed -e "$PAT" < "$TEMPFILE" > "$FILE"
- rm -- "$TEMPFILE"
- echo "Done."
- shift
- done
|