How would I write a shell script, change-lines, which will substitute a string for a replacement string for each occurance of the string in files
specified? The original file will be saved, with the same filename
with the .keep extension unless the -n option is present. I don't mind using temporary file for this script. The search string and/or the
replacement string can have special characters in them.
The script will use
* the option -s "string" for the search string
* the option -r "string" for the replacement string
* the -n option to prevent a backup file from being created
* the -h option to print a usage statement and exit
The script will exit with an error status and print an error message:
* if the -s option is not present.
* if the -r option is not present.
* if the string is not specified with the -s option
* if the string is not specified with the -r option
* if there are any other options specified
* if there are no input files specified
* if the input file cannot be read by the current process
* if the input file cannot be written by the current process
* if you cannot create the backup file.
Here is the usage statement for the script:
change-lines [-n] -s search string -r replace string files ...
-n do not backup the original file
-s search string the search for this string
-r replace string replace the search string with
-h print this message
prompt> change-lines -s foobar -r FooBar *.c
This script will edit all the files *.c, and each occurrence
of foobar it will be replaced by FooBar it will be replaced by
FooBar. Each file will be backed up.
prompt> change-lines -s "SHELL IS NOT FUN" -r "SHELL PROGRAMING IS A LOT OF FUN" /tmp/file1.txt
This script will edit all the file /tmp/file1.txt , and each
occurrence of SHELL IS NOT FUN will replaced by the text, SHELL
PROGRAMMING IS A LOT OF FUN. A backup file /tmp/file1.txt.keep
will be created.
Shell scripting is summarized.