#!/bin/bash # subst.sh: a script that substitutes one pattern for #+ another in a file, #+ i.e., "sh subst.sh Smith Jones letter.txt". # Jones replaces Smith. ARGS=3 # Script requires 3 arguments. E_BADARGS=85 # Wrong number of arguments passed to script. if [ $# -ne "$ARGS" ] then echo "Usage: `basename $0` old-pattern new-pattern filename" exit $E_BADARGS fi old_pattern=$1 new_pattern=$2 if [ -f "$3" ] then file_name=$3 else echo "File \"$3\" does not exist." exit $E_BADARGS fi # ----------------------------------------------- # Here is where the heavy work gets done. sed -e "s/$old_pattern/$new_pattern/g" $file_name # ----------------------------------------------- # 's' is, of course, the substitute command in sed, #+ and /pattern/ invokes address matching. # The 'g,' or global flag causes substitution for EVERY #+ occurence of $old_pattern on each line, not just the first. # Read the 'sed' docs for an in-depth explanation. exit $? # Redirect the output of this script to write to a file.