Points :
Due
For submission, use :
Each problem should include one or more comment lines explaining what you are doing.
You can change the contents of the data variable if you wish to run the sed commands on your own data set. But set it back before handing in the assignment. You can test the results of your 1st 7 solutons by using my data set and using diff to compare the souts files generated by solutions which can be found in '/home/hopper/Sed'.
Create a function, similar to the one outlined in the grep assignment, that invokes diff and compares my answers to yours.
function sdiffit () { 'diff sout.$1 /home/hopper/berezin/Sed/sout.$1 }
Unless stated otherwise, when a string is generically described as a word, treat a word as alpha, numeric, and underscore. If specific word given, treat as literal unless otherwise specified. If it says find the word dog, look for lower case "dog" unless the problem indicates otherwise.
Keep in mind, the passwd file uses a : as a field delimiter.
If you spot differences between your solutions and mine, and you think yours is rigt, check with me.
Send me your solution, I'll check it.
I may also check the data sets, my solution, and the interpretation of the problem.
Write a complete sed statement that edits the specified file. Different problems use different data files. Use the appropriate variable to reference the appropriate file. You may use multiple -e options. But unless specified, do not use any other sed options.
Once that line has been identified, append :daemon to the end of the line.
So :
sshd:x:114:65534::/var/run/sshd:/usr/sbin/nologin
Will look like :
sshd:x:114:65534::/var/run/sshd:/usr/sbin/nologin:daemon
Remember : separate fields in the passord file, so using square brackets and the not, [^:], is useful.
So :
z1763923 10584 10583 0 09:39 pts/24 00:00:00 -bash
Will look like :
z1763923 10584 10583 0 09:39 pts/24 00:00:00 -bash : z1763923
Check out \(\) and &. Parentheses are numbered from the left and they may be embedded. \(\(...\)....\) is legal.
In NoSpace, echo the arguments passed on the command line and pipe them to grep and pipe all output of the grep to /dev/null. All you are interested in is if the search found anywhere in the passed string.
For this one, use the -v to test for a string with no spaces.
echo "$*" | grep ....... >/dev/null 2>&1
Then return the status of the grep on returning from the NoSpace function.
If you use the -v, it should return success if no spaces found.
You could use it as follows :
echo -c "Input a string with no spaces or type quit to quit : " read ans while [ "$ans" != quit ] do if NoSpace "$ans" then : # do what ever you want to do with the string. else echo "The data you've given has a space in it. fi echo -c "Input a string with no spaces or type quit to quit : " read ans done
Don't use the -v option.
But you can start with the NoSpace function and modify it to test for a string of just 1 or more digits from start to end.
For this one, use the -e twice.
For the 1st one, test for one or more digists, followed by a . (remember to backslash it), followed by zero or more digits.
For the 2nd one, test for zero or more digists, followed by a . (remember to backslash it), followed by one or more digits.