Link to home
Start Free TrialLog in
Avatar of dfn48
dfn48

asked on

Using gawk to read and manipulate multiple texts from a file

OS is AIX

The first part of the program check if the input  of a  particular date and group name exist in a text file. The input values need to match on that entire record in the text file. This process is similar to SQL  where clause statement.

The second part  of the program display an error message and exit the loop if there isn't a match or else continue if there is a match.  The  date format needs to change from mm/dd/yyyy to mm/dd/yy in the output of results.  The input variable n limit the number  of records that are displayed.

I'm getting an error message when I run my code. Error message: too many errors to read.

a)   Input variables in the code are
        group=hasasvmi
        date1=09/29/2016
         n=1

b)  The following is the data in the text file
       Example 1:  data in k_2016.09.29.txt :


/dev/sasdwk/hasasvmi 128 1 127  0% /sasdwk/hasasvmi  2016.09.29_11.30.27

c)   The following is an example  of the results that I want to display:



Filesystem                          GBks    Free    Used     used%                     Mt                                Date          Time
/dev/sasdwk/hasasvmi     128       1          127         0%        /sasdwk/hasasvmi        09/29/16     11:30


Here is my code:

group=hasasvmi
date1=09/29/2016
n=1
|{
read "$group"
read "$date1"
read "$n"

DISKINFO=tail $n" k_%Y.%M.%D.txt

  while IFS='' read $line

      do

        group=hasasvmi
        date1=09/29/2016

       f1='grep ^"f1" $line | awk '{print $1}''
       f2='grep ^"f2" $line | awk '{print $2}''
       f3='grep ^"f3" $line | awk '{print $3}''
       f4='grep ^"f4" $line | awk '{print $4}''
       f5='grep ^"f5" $line | awk '{print $5}''
       f6='grep ^"f5" $line | awk '{print $6}''

       If  grp= echo( $grep "$group" "$line") &&
       f7= echo ('grep " $date1" | date2= (date +%m/%d/%Y | gawk  "$line" 'BEGIN {FS=". _" OFS="/"} {print $7}'')
       && f8= (date +"%H:%M" | gawk "line" 'BEGIN {FS="_ ." OFS="."} {print $7}'')
       Then
         continue
            printf '\tFileSystem%s\tGBks%d%s\t Free%d%s\tused%d %s\tused%%s\ tMt %s\ tDate%s\ tTime%s\n'     
                   "$f1" "$f2" "$f3" "$f4" "$f5"  "$f6" "$f7" 
        else
             echo '$grp ' doesn't exist (exit)|| echo  '$f7' doesn't match the date on file for'$grp' (exit)

    fi

done <"$DISKINFO"

}

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of arnold
arnold
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial