Saturday, 2 November 2013

awk and sed scripts example 2

#shell script to manage(add/update/view/delete) Judge database with Fields: JudgeName, CourtName,City,Cases_judged,TotalCasses
#1. Display No of records
#2. Find Judge with highest cases judged
#3. Calculate total Cases of Court “Ahmedabad”
#4. List All Judge Names
#5.Exit

#! /bin/bash

mych=0
until [ $mych -eq 5 ]
do

echo ""
echo " Select following choices "
echo " 1) Add records in judge file"
echo " 2) update records in judge file"
echo " 3) Display no of Records "
echo " 4) Delete records in judge file"
echo " 5) Exit "

read mych

case $mych in

   1) echo "Add Records to Judge File "
 echo -e "Enter Judge Name :"
 read jname
 read -p  "Enter Court Name : " cname
 read -p  "Enter City : " city
 read -p  "Enter Cases Judged :" cjudged
 read -p  "Enter Total Cases : " tcases
 echo -e $jname"\t"$cname"\t"$city"\t"$cjudged"\t"$tcases>>judgedb.dat ;;
   2) echo -e "Update Record for Judge "
read -p "Enter Judge Name whose info wants to update : " jname
echo -e "Enter cjudged"
read  cjudged  
   
oldcjudged=`awk -v jn=$jname ' $1==jn  {print $4 }' judgedb.dat`
    echo $oldcjudged  
lineno=`awk -v jn=$jname ' $1==jn  {print FNR }' judgedb.dat`
        echo $lineno
sed "$lineno s/\<$oldcjudged\>/$cjudged/1" judgedb.dat ;;
   3) awk -f noofrecordsjudge.awk judgedb.dat ;;
   4) echo -e "Delete Record for Judge "
read -p "Enter Judge Name whose info wants to be deleted : " djname
rcount=`grep -c "^$djname" judgedb.dat`
if [ $rcount -eq 1 ];
then
 sed "/^$djname/d" judgedb.dat
 # to delete permanently from file use
 # sed -i "/^$djname/d" judgedb.dat

 echo -e "Record deleted successfully"
else
 echo -e "Record does not exist"
fi
;;
   5) exit ;;

esac

done


# Display No of records
# Command is
awk " END { print NR -1 } " judgedb.dat


#Find Judge with highest cases judged
# Command is
awk -f  judgehighcase.awk judgedb.dat

# awk language code is infile named as judgehighcase.awk

# Preprocessing section "BEGIN " is optional here
BEGIN { 
          }
{
    if (FNR==2) { highcase=$4 }
    if (highcase<$4)
           { highcase=$4
              judge=$1 
            }
}
 END { 
          print judge " with highest cases : " highcase
 }

#Calculate total Cases of Court “Ahmedabad”
# Command is
awk -f  totalcases.awk judgedb.dat

# awk language code is infile named as totalcases.awk
{
  if ($3=="AHMEDABAD")
{
    tcases+=$5
}

}

END {
print "total cases of Ahmedabad court :" tcases
}


# List All Judge Names
# Command is 
awk -f listalljudgenames.awk judgedb.dat

# awk language code is infile named as listalljudgenames.awk

BEGIN { print "All judge names : " 
}
{
if ($1=="JudgeName") { FNR=2}
  else
   print $1
}


# Master menu driven shell script file to display record, find records

#! /bin/bash

mych=0
until [ $mych -eq 5 ]
do

echo ""
echo " Select following choices "
echo " 1) Display no of Records "
echo " 2) Find judge with highest cases "
echo " 3) Calculate total cases of court "
echo " 4) List all judge names "
echo " 5) Exit "

read mych

case $mych in

   1) awk " END { print NR -1 } " judgedb.dat ;;

   2) awk -f judgehighcase.awk judgedb.dat ;;

   3) awk -f totalcases.awk judgedb.dat ;;

   4) awk -f listalljudgenames.awk judgedb.dat ;;

   5) exit ;;

esac

done

# Data File named judgedb.dat

JudgeName       CourtName       City            Cases_judged    TotalCasses
AAA             CIVIL           AHMEDABAD       40              100
BBB             NONCIVIL        AHMEDABAD       10              40
CCC             CRIMINAL        BARODA          40              80
DDD             CIVIL           BARODA          40              140
EEE             CIVIL           ANAND           15              100
FFF             NONCIVIL        SURAT           40              40
TTT     NONCIVIL        SURAT   40      60
XXX     VOCATIONAL      ANAND   4      40
WWW     CIVIL   SURAT   50      60
ZZZ CIVIL   BARODA  40      60
ZZX     CIVIL   ANAND   40      40
YYY NONCIVIL   BARODA  20      30
PPP CIVIL   MUMBAI  60      100

No comments:

Post a Comment