Question
A Unix program: Shell Assignment 2.1 Stage 1 Create a directory ~/UnixCourse/scriptAsst. Turn the two-line version, above, of the substitution commands into a shell script,
A Unix program: Shell Assignment
2.1 Stage 1
Create a directory ~/UnixCourse/scriptAsst.
Turn the two-line version, above, of the substitution commands into a shell script, subst1 taking three command-line parameters:
the string to be replaced
the string with which to replace it
the name of the file in which to make the substitution
For example,
echo "This is a test." > myFile.txt ~/UnixCourse/scriptAsst/subst1 is are myFile.txt cat myFile.txt
should print the line:
Thare are a test.
having replaced all occurrences of is in the file myFile.txt by are, leaving the original file as myFile.txt.bak.
Similarly,
echo "Hello world." > aardvark.dat echo "How are you?" >> aardvark.dat ~/UnixCourse/scriptAsst/subst1 o "" aardvark.dat cat aardvark.dat
should remove (replace by the empty string) all occurrences of o in the file aardvark.dat, leaving the original file as aardvark.dat.bak. The output of the final statement should be:
Hell wrld. Hw are yu?
2.2 Stage 2
One problem with this approach is that the files creation and modification dates are altered, even if no change was made to the file contents (because the string being relaced did not occur within the file).
Create a new script, subst2, taking the same three parameters, that performs the substitution and backup file creation when the target string occurs somewhere in the file, but leaves the file completely unchanged (and does not create the .bak file) if the string being replaced is nowhere in the file. (Hint: there are two ways to do this. One is to check first for the presence of the target string and, if it is found, to do the substitution as before. It may be easier to go ahead and do the substitution, and then to check and see if the resulting files are identical.)
2.3 Stage 3
Generalize your subst2 script, producing a new script subst that will apply a substitution to any number of files given on the command line. For example
~/UnixCourse/scriptAsst/subst foo bar myFile1.txt myFile2.txt myFile3.txt
should apply the same substitution throughout each of the three files named there.
for stage 1. I tried,
#!/bin/sh cp $3 $3.bak sed -i "s/$1/$2/g" $3
that doesn't to work, when i run it says "backup file was not created properly and dates and other attributes have been changed."
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started