Saturday, 2 November 2013

awk and sed scripts example 1

# A script is written here  to manage(add/update/delete/view) the text file called “datafile.dat”.
#Each entry consists of fields separated by colons. The fields are: First name, last name, Phone  number,Address, Birthdate, pincode

# Script File

#! /bin/bash

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

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

read mych

case $mych in

   1) echo "Add Records to data File "
 echo -e "Enter Person First name :"
 read  pfname
 read -p  "Enter Last Name : " plname
 read -p  "Enter Phone Number : " pphoneno
 read -p  "Enter Address : " address
 read -p  "Enter Birth Date :" bdate
 read -p  "Enter Pin Code : " pincode
 echo -e $pfname":"$plname":"$pphoneno":"$address":"$bdate":"$pincode>>datafile.dat ;;
   2) echo -e "Update Record for Person "
read -p "Enter Person First Name whose info wants to update : " pfname
echo -e "Enter '1' to update last name"
echo -e "Enter '2' to update phone number"
echo -e "Enter '3' to update address"
echo -e "Enter '4' to update birth date"
echo -e "Enter '5' to update pin code"
echo -e "Enter '6' to Exit"
read myupdatech
     
case $myupdatech in

1) read -p "Enter New Value for Last Name " plastname

oldplastname=`awk -F ":" -v jn=$pfname ' $1==jn  {print $2 }' datafile.dat`
lineno=`awk -F ":" -v jn=$pfname ' $1==jn  {print FNR }' datafile.dat`
sed -i "$lineno s/\<$oldplastname\>/$plastname/1" datafile.dat ;;

2) read -p "Enter New Value for Phone number " ppnumber

oldppnumber=`awk -F ":" -v jn=$pfname ' $1==jn  {print $3 }' datafile.dat`
lineno=`awk -F ":" -v jn=$pfname ' $1==jn  {print FNR }' datafile.dat`
sed -i "$lineno s/\<$oldppnumber\>/$ppnumber/1" datafile.dat ;;

3) read -p "Enter New Value for address  " paddress

oldpaddress=`awk -F ":" -v jn=$pfname ' $1==jn  {print $4 }' datafile.dat`
lineno=`awk -F ":" -v jn=$pfname ' $1==jn  {print FNR }' datafile.dat`
sed -i "$lineno s/\<$oldpaddress\>/$paddress/1" datafile.dat ;;

4) read -p "Enter New Value for birth date " pbdate
echo "New Date " $pbdate
oldpbdate=`awk -F ":" -v jn=$pfname ' $1==jn  {print $5 }' datafile.dat`
lineno=`awk -F ":" -v jn=$pfname ' $1==jn  {print FNR }' datafile.dat`
sed -i "$lineno s/\<$oldpbdate\>/$pbdate/1" datafile.dat ;;

5) read -p "Enter New Value for pin code " ppincode

oldppincode=`awk -F ":" -v jn=$pfname ' $1==jn  {print $6 }' datafile.dat`
lineno=`awk -F ":" -v jn=$pfname ' $1==jn  {print FNR }' datafile.dat`
sed -i "$lineno s/\<$oldppincode\>/$ppincode/1" datafile.dat ;;

6) exit ;;

esac  # end of inner case
if [ $? -eq 0 ] ;
then echo "Updated Successfully"
else "Record is not updated"
fi
    ;; # end of outer case switch 2
   3) cat -n datafile.dat ;;
   
   4) echo -e "Delete Record for Judge "
read -p "Enter Person First Name whose info wants to be deleted : " pfname
rcount=`grep -c "^$pfname" datafile.dat`
if [ $rcount -eq 1 ];
then
 sed "/^$pfname/d" datafile.dat
 # to delete permanently from file use
 # sed -i "/^$pfname/d" datafile.dat
 echo -e "Record deleted successfully"
else
 echo -e "Record does not exist"
fi
;;
   5) exit ;;

esac

done

#datafile.dat data file

firstname:lastname:phonenumber:address:birthdate:pincode
ABC:PATEL:978794:ANAND:01-04-1989:388120
XYZ:SHAH:8797:SURAT:21-05-1994:388842
PQR:DAVE:78945:BARODA:18-12-1997:794564
GANESH:PATIL:89789:AHMEDABAD:05-07-1990:388001

No comments:

Post a Comment