Solved

Using gawk to read and manipulate multiple texts from a file

Posted on 2016-10-09
1
59 Views
Last Modified: 2016-10-16
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

0
Comment
Question by:dfn48
1 Comment
 
LVL 77

Accepted Solution

by:
arnold earned 500 total points
ID: 41836196
What is the forma of the data you are trying to process?
If it spans multiple lines,  you need to define a multi-line match pattern, the other option is to combine the data into a single line and then perform the match.
I've not master the multi-line pattern match, so I tend to based on the pattern combine the multi-line data set into a single line and then match the data I am looking for.
I use perl for such purposes, you can use gawk, but I think you have to perform all the tests within versus reading a line by line in bash passing a line at a time to multiple grep Checks...

Your primary test igor span two lines meaning the first match might not be met effectively missing the data point.
0

Featured Post

Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
nodeip 9 80
What is the meaning of mount pont? with respect to windows file server. 7 60
Write an app 10 70
remove one line from a file in solaris 8 29
Installing FreeBSD… FreeBSD is a darling of an operating system. The stability and usability make it a clear choice for servers and desktops (for the cunning). Savvy?  The Ports collection makes available every popular FOSS application and packag…
Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question