ASSIGNMENT 1 Name : NITYA TIWARI Roll Number : 10307037
Q.1 Grep the marks of the students who scored above 75 in atleast one subject. Ans. Bash Script is : #!/bin/bash paste students.txt marks.txt >> ques1.txt for i in {75..100} do grep $i ques1.txt done | sort | uniq rm ques1.txt
Q.2 Grep the marks of all the students whose names begin with an ‘s’. Ans. #!/bin/bash paste students.txt marks.txt >> ques1.txt grep “S” ques1.txt rm ques1.txt Q.3 Grep the marks of all the students whose names begin with consonants. Ans. #!/bin/bash paste students.txt marks.txt >> ques1.txt grep ^[AEIOU] ques1.txt rm ques1.txt
Q.4 Change the results.sh script to accept the input files also as arguments. Ans. #!/bin/bash # to execute write ./ques4.sh students.txt marks.txt cut -d " " -f 2- $1 | paste -d " " $2 - | sort > results.txt
Q.5 Write a shell script that will take a filename as input and check if it is executable. Ans. #!/bin/bash # ./ques5.sh filename.txt ex=`ls -l $1 | cut -c4 -` if [ "$ex" != "x" ] then echo "Not Executable" else echo "Executable" fi Q.6 Modify the script in the previous step, to remove the execute permissions, if the file is executable. Ans. #!/bin/bash # ./ques6.sh filename.txt ex=`ls -l $1 | cut -c4 -` if [ "$ex" != "x" ] then echo "Not Executable" else echo "Executable" echo "Removing execute permission" chmod u-x $1 fi
Q.7 Write a shell script to remove all executable files from a directory, when a directory is given as argument. Ans. #!/bin/bash # ./ques7.sh directory for i in `ls $1` do cd $1 ex=`ls -l $i | cut -c4 -` if [ "$ex" != "x" ] then echo "$i not executable retained" else echo "Executable" echo "Removing $i" rm $i fi cd .. done Q.8 List all the years between 2001 and 2099 which have 5 Fridays, Saturdays and Sundays in the month of July. Hint: man cal Ans. #!/bin/bash for i in {2001..2099} do ncal july $i >> tmp2.txt echo $i >> yr1.txt done grep "Fr" tmp2.txt >> tmp1.txt paste yr1.txt tmp1.txt >> pos1.txt grep "Fr 1" pos1.txt | cut -c 1-4 rm tmp1.txt rm tmp2.txt rm yr1.txt rm pos1.txt
Q.9 Generate frequency list of all the commands you have used, and show the top 5 commands along with their count. (Hint: history command will give you a list of all commands used.)
Ans. (This program could not produce desired results) #!/bin/bash ((var=1)) rm tr1.txt rm tr.txt history | cut -d " " -f4- - | sort -nr - | uniq -c >> tr1.txt history | cut -d " " -f4- - | sort | uniq -c - | cut -d " " -f6 >> tr.txt history | cut -d " " -f4- - | sort | uniq -c - | cut -d " " -f7 >> tr.txt for i in `sort -nr tr.txt`; do if [ "$var" -lt 7 ]; then grep "$i" tr1.txt ((var=var+1)); fi done
Q.10 Generate a word frequency list for wonderland.txt. Hint: use grep, tr, sort, uniq (or anything else that you want) Ans. #!/bin/bash # ./ques10.sh you wonderland.txt grep -ion "$1" $2 >> linec.txt echo " Frequency of word $1 in $2 " wc -l linec.txt | cut -d " " -f1 rm linec.txt
Q.11 Print the middle line of the file wonderland.txt. Ans. #!/bin/bash # ./ques11.sh wonderland.txt ex=`wc -l $1 | cut -d " " -f1` ex1=`echo $((ex/2))` cat $1 | sed $ex1'q;d'
Q.12 Write a code that lists the last word of the string in one file and remaining string in another file. E.g.-In “Who is Homer Simpson”,’Simpson’ should be written in one file and ‘Who is Homer’ should be written in another file. Ans. #!/bin/bash rm tmp1.txt rm file1.txt rm file2.txt echo "Enter String" read str echo $str >> tmp1.txt ex=`wc -w tmp1.txt | cut -d " " -f1 -` ex1=`echo $(($ex-1))` cut -d " " -f1-$ex1 tmp1.txt >> file1.txt cut -d " " -f$ex tmp1.txt >> file2.txt rm tmp1.txt
Q.13 Write a bash script that takes 2 or more arguments,
All arguments are filenames If fewer than two arguments are given, print an error message
If the files do not exist, print error message Otherwise concatenate files
Ans. (This programme is not working) #!/bin/bash rm tmp1.tx rm tmp2.txt rm tmp3.txt rm tmp4.txt echo "$1" >> tmp1.txt echo "$2" >> tmp2.txt ex=`wc -w tmp1.txt | cut -d " " -f1 -` ex1=`wc -w tmp2.txt | cut -d " " -f1 -` if [ $ex -gt 1 ]; then if [ $ex1 -gt 1 ]; then echo "y"
paste $1 $2 >> N1.txt fi fi Q.14 Write a script that takes exactly one argument, a directory name. If the number of arguments is more or less than one, print a usage message. If the argument is not a directory, print another message. For the given directory, print the five biggest files and the five files that were most recently modified. Ans.