Another parsing question (awk)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Another parsing question (awk)
# 1  
Old 08-09-2013
Another parsing question (awk)

Input File
Code:
 
Name of the session:  filesrv_quo
snap Logical Units UID:  60:06:01:60:01:7B:25:00:C8:86:B0:CA:5B:A2:E0:11
 
Name of the session:  verspn2_at_176_0218
snap Logical Units UID:  
 
Name of the session:  DRT-ny-iadsql1-c_ny-iadsql2-c
snap Logical Units UID:  60:06:01:60:32:BB:21:00:0E:DF:3F:17:9F:00:E3:11, 60:06:01:60:32:BB:21:00:CC:07:E9:04:34:E0:E1:11, 
60:06:01:60:32:BB:21:00:B0:AB:B3:FD:33:E0:E1:11

Output needed
Code:
 
60:06:01:60:01:7B:25:00:C8:86:B0:CA:5B:A2:E0:11,[filesrv_quo]
60:06:01:60:32:BB:21:00:0E:DF:3F:17:9F:00:E3:11,[DRT-ny-iadsql1-c_ny-iadsql2-c]
60:06:01:60:32:BB:21:00:CC:07:E9:04:34:E0:E1:11,[DRT-ny-iadsql1-c_ny-iadsql2-c]
60:06:01:60:32:BB:21:00:B0:AB:B3:FD:33:E0:E1:11,[DRT-ny-iadsql1-c_ny-iadsql2-c]
N/A,[verspn2_at_176_0218]

Thanks
# 2  
Old 08-09-2013
What have you tried, where are you stuck?
This User Gave Thanks to Scott For This Post:
# 3  
Old 08-09-2013
I tried this ... i do not get the desired result

Code:
 
nawk  -v cll=$i 'BEGIN{ RS="\n"}
   /^Name of the session:/{SGname=$0
                       gsub(/^Name of the session:/, "", SGname)
                       gsub(/^[ \t]+|[ \t]+$/, "", SGname)
                        SGname="["SGname"]" }
   /^snap Logical Units UID:/{UIDD=$0
                           gsub(/^snap Logical Units UID:/,"",UIDD)
                           gsub( /,/,"\n",UIDD)
                printf "%s\n", SGname":"UIDD > "/tmp/final_futu"
                FS=" "
}' /tmp/file

# 4  
Old 08-09-2013
I think your input file format is a bit messed up. This awk program might help:
Code:
nawk '
        /Name of the session/ {
                nos = $NF
        }
        /snap Logical Units UID/ {
                slu = $0
                gsub ( /snap Logical Units UID:[ ]*|[ ]*/, X, slu )
                n = split ( slu, A, "," )
                if ( n > 0 )
                {
                        for ( i = 1; i <= n; i++ )
                        {
                                if ( A[i] )
                                        print A[i], "[" nos "]"
                        }
                }
                else
                {
                        print "N/A", "[" nos "]"
                }
        }
        !/Name of the session/ && !/snap Logical Units UID/ && NF {
                        print $0, "[" nos "]"
        }
' OFS=, file

This User Gave Thanks to Yoda For This Post:
# 5  
Old 08-09-2013
Try also
Code:
awk     '/Name of/              {sess=$2; next}
         /, *$/                 {getline x; $0=$0 x}
         $2==""                 {$2="N/A"}
         /snap/                 {for (i=2;i<=NF;i++) print $i, sess}
        ' FS="[,:] " file
60:06:01:60:01:7B:25:00:C8:86:B0:CA:5B:A2:E0:11 filesrv_quo
N/A verspn2_at_176_0218
60:06:01:60:32:BB:21:00:0E:DF:3F:17:9F:00:E3:11 DRT-ny-iadsql1-c_ny-iadsql2-c
60:06:01:60:32:BB:21:00:CC:07:E9:04:34:E0:E1:11 DRT-ny-iadsql1-c_ny-iadsql2-c
60:06:01:60:32:BB:21:00:B0:AB:B3:FD:33:E0:E1:11 DRT-ny-iadsql1-c_ny-iadsql2-c


Last edited by RudiC; 08-09-2013 at 12:25 PM..
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Noob question about parsing a website

I'm trying to parse the website, finance.yahoo.com/q?s=ge&ql=1, and retrieve the info between <span id="yfs_l84_ge">18.98</span>, so 18.98. What would be the best way to go about this in a bash script? Any help or suggestions will be much appreciated. Thanks! (2 Replies)
Discussion started by: mayson
2 Replies

2. Shell Programming and Scripting

another parsing question

Input File Information about each HBA: HBA UID: 20:00:00:00:C9:9A:62:88:10:00:00:00:C9:9A:62:88 Server Name: 20:00:00:00:C9:9A:62:88:10:00:00:00:C9:9A:62:88 Server IP Address: UNKNOWN HBA Model Description: HBA Vendor Description: HBA Device Driver... (2 Replies)
Discussion started by: greycells
2 Replies

3. Shell Programming and Scripting

Question about argument parsing in scripts

Hello all, I am relatively new to linux and bash scripting. I have what seems to be a simple question but I'm having trouble finding the answer. The question is what is the difference between the variables $@ and $*. I've seen them both used in the same context, and I've tried a number of... (4 Replies)
Discussion started by: nicthu
4 Replies

4. Shell Programming and Scripting

Question about reading and parsing text file

Hello, I'm just getting started with BASH programming. I would like to write a script to solve a file renaming problem I have. I received a directory containing a collection (>2000) of files whose names are in DOS 8.3 format, and woild like to rename the filenames to a longer and more... (8 Replies)
Discussion started by: polomora
8 Replies

5. Shell Programming and Scripting

Perl parsing question

I need some help loading an array. I have two unique delimiters, but I keep running into recursion. #!/usr/bin/perl $INFILE="/root/scripts/data.txt"; $pat1="SCRIPT####"; $pat2="SCRIPT#echo"; $flag=0; $inc=0; $chunk=""; open(INFILE,"<$INFILE")|| die; while(<INFILE>) { if... (2 Replies)
Discussion started by: s_becker
2 Replies

6. Shell Programming and Scripting

Question about Awk for Data Parsing

Hi, I am doing some data parsing for some economics research. I was recently exposed to shell script and am brand new to awk. I have a large csv file (like 10G) and I would like to make it a lot smaller with awk, but it is a bit tricky for me and I haven't been able to get it yet. I would... (5 Replies)
Discussion started by: EconResearch
5 Replies

7. Shell Programming and Scripting

Parsing question.

Hi There, First time poster here. I've got a parsing question and have a solution but am sure there is a much better way of doing this with just awk. My knowledge of awk is pretty limited so hope someone out there can give me a better solution. Here's the problem, I'm receiving a file from a... (2 Replies)
Discussion started by: little_happosai
2 Replies

8. UNIX for Dummies Questions & Answers

parsing with awk

I have a file that reads like this: name:john name:bill name:james phone:123 phone:456 phone:789 i would like change the file so it appears like this: name:john phone:123 name:bill phone:456 name:james phone:789 any help is greatly appreciated! (1 Reply)
Discussion started by: chknstrp
1 Replies

9. Shell Programming and Scripting

Parsing question

Hi Guys, I was wondering if you could help me out - I have a directory /home/users/datafiles/ which contain files "dat dd-mm-yy.xls" I am trying to write a script which does the following - (1) loops through all the files (2) retrieves the dd-mm-yy string and converts it into a... (12 Replies)
Discussion started by: muser
12 Replies

10. UNIX for Dummies Questions & Answers

Text parsing question

How would I split a file based on the location of a string, basically I want all entries above the string unix in this example 1 2 3 4 unix 5 6 7 Thanks, Chuck (3 Replies)
Discussion started by: 98_1LE
3 Replies
Login or Register to Ask a Question