Parsing a name Value pair file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Parsing a name Value pair file
# 1  
Old 09-14-2015
Parsing a name Value pair file

Hi,

I have a file having rows as

Row1 : model=.1.3.6.1.4.1.9.1.1047,location=abc, pollgrp=PG_CISCO4, ifindex=3, ip=10.10.10.1,parttype=Interface, devtype=Router,part=GigabitEthernet0/1,ifmtu=1520
Row2 : model=.1.3.6.1.4.1.9.1.2047,pollgrp=PG_ABCD4,ifindex=3,contact=LMN,ip=20.20.20.1,devtype=Router,ifmt u=2345
Row3:model=.1.3.6.1.4.1.9.1.3047,location=xyz,devtype=route,dwelf=xxxx

I need output as below
Code:
model;location;pollgrp;ifindex;contact;ip;parttype;devtype;part;ifmtu;dwelf
.1.3.6.1.4.1.9.1.1047;abc;PG_CISCO4;3;;10.10.10.1;Interface;Router;GigabitEthernet0/1;1520;
.1.3.6.1.4.1.9.1.2047;;PG_ABCD4;3;LMN;20.20.20.1;;Router;;2345;
.1.3.6.1.4.1.9.1.3047;xyz;;;;;;route;;;xxxx

Can someone help me out?

Last edited by vbe; 09-14-2015 at 09:28 AM..
# 2  
Old 09-14-2015
Any attempts from your side?

---------- Post updated at 15:17 ---------- Previous update was at 15:12 ----------

Howsoever, try
Code:
awk -F, '
BEGIN   {HDStr = "model;location;pollgrp;ifindex;contact;ip;parttype;devtype;part;ifmtu;dwelf"
         for (HDCNT=i=split(HDStr, HD, ";"); i>0; i--) COL[HD[i]]
         print HDStr
        }
        {gsub (/ /,"")
         for (i=1; i<=NF; i++)  {split ($i, T, "=")
                                 RES[T[1]]=T[2]
                                }
         DL=""
         for (i=1; i<=HDCNT; i++)       {printf "%s%s", DL, RES[HD[i]]
                                         DL=";"
                                        }
         printf "\n"
         split ("", RES)
        }

' file
model;location;pollgrp;ifindex;contact;ip;parttype;devtype;part;ifmtu;dwelf
.1.3.6.1.4.1.9.1.1047;abc;PG_CISCO4;3;;10.10.10.1;Interface;Router;GigabitEthernet0/1;1520;
.1.3.6.1.4.1.9.1.2047;;PG_ABCD4;3;LMN;20.20.20.1;;Router;;2345;
.1.3.6.1.4.1.9.1.3047;xyz;;;;;;route;;;xxxx

taking into account that your sample file's fields are not built consistently; obviously some have spaces and some don't.
# 3  
Old 09-14-2015
The cut command should give you what you want.
Here is a sample script.

Code:
$ cat mydata.dat
model;location;pollgrp;ifindex;contact;ip;parttype;devtype;part;ifmtu;dwelf
.1.3.6.1.4.1.9.1.1047;abc;PG_CISCO4;3;;10.10.10.1;Interface;Router;GigabitEthernet0/1;1520;
.1.3.6.1.4.1.9.1.2047;;PG_ABCD4;3;LMN;20.20.20.1;;Router;;2345;
.1.3.6.1.4.1.9.1.3047;xyz;;;;;;route;;;xxxx
$ cat runme.sh
#!/bin/bash

MY_HEADER="model;location;pollgrp;ifindex;contact;ip;parttype;devtype;part;ifmtu;dwelf"
for line in `cat mydata.dat`
do
   for i in {1..11}
   do
      THIS_FIELD=`echo $MY_HEADER | cut -d";" -f$i`
      THIS_VALUE=`echo $line      | cut -d";" -f$i`
      printf "%15s" "${THIS_FIELD}: "
      echo "|${THIS_VALUE}|"
   done
   echo " "
done

$ ./runme.sh
        model: |model|
     location: |location|
      pollgrp: |pollgrp|
      ifindex: |ifindex|
      contact: |contact|
           ip: |ip|
     parttype: |parttype|
      devtype: |devtype|
         part: |part|
        ifmtu: |ifmtu|
        dwelf: |dwelf|

        model: |.1.3.6.1.4.1.9.1.1047|
     location: |abc|
      pollgrp: |PG_CISCO4|
      ifindex: |3|
      contact: ||
           ip: |10.10.10.1|
     parttype: |Interface|
      devtype: |Router|
         part: |GigabitEthernet0/1|
        ifmtu: |1520|
        dwelf: ||

        model: |.1.3.6.1.4.1.9.1.2047|
     location: ||
      pollgrp: |PG_ABCD4|
      ifindex: |3|
      contact: |LMN|
           ip: |20.20.20.1|
     parttype: ||
      devtype: |Router|
         part: ||
        ifmtu: |2345|
        dwelf: ||

        model: |.1.3.6.1.4.1.9.1.3047|
     location: |xyz|
      pollgrp: ||
      ifindex: ||
      contact: ||
           ip: ||
     parttype: ||
      devtype: |route|
         part: ||
        ifmtu: ||
        dwelf: |xxxx|

Login or Register to Ask a Question

Previous Thread | Next Thread

8 More Discussions You Might Find Interesting

1. Programming

Calculate ratios for each pair in a given file

Hello, My input file looks like this #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Individual1 Individual2 Individual3 Individual4 Individual5 Individual6 22 10000 ID1 A ... (0 Replies)
Discussion started by: nans
0 Replies

2. Shell Programming and Scripting

awk name pair values

Team, I have a file like below FILE: NAM1,KEY1,VAL1 NAM1,KEY2,VAL2 NAM1,KEY3,VAL3 NAM2,KEY1,VALA NAM2,KEY2,VALB NAM2,KEY3,VALCOutput: I have to build commands like below <Script> VAL1 VAL2 VAL3 NAME1 <Script> VALA VALB VALC NAME2Can you please help with awk command i can use... (4 Replies)
Discussion started by: mallak
4 Replies

3. UNIX for Dummies Questions & Answers

Deleting a file with no corresponding pair

Hi, I am working with 2 sets of files (*csv and *asc) and I wanted to delete asc file with no corresponding csv counterpart. I did tried it manually but its been difficult working with a longer list of files. sample files in directory 20120601.csv 20120601_f1.asc 20120603.csv 20120602_f1.asc... (3 Replies)
Discussion started by: ida1215
3 Replies

4. Shell Programming and Scripting

Pair wise comparisons

Hi, I have 25 groups and I need to perform all possible pairwise compariosns between them using the formula n(n-1)/2. SO in my case it will be 25(25-1)/2 which is equal to 300 comparisons. my 25 groups are FG1 FG2 FG3 FG4 FG5 NT5E CD44 CD44 CD44 AXL ADAM19 CCDC80 L1CAM L1CAM CD44... (1 Reply)
Discussion started by: Diya123
1 Replies

5. AIX

How to find pair VIOS?

Hi, I have the scenario, that there 3 VIOS in a Frame in this 2 are in dual VIOS My question is how to find which VIOS are in dual? Also, any vios command to identify the pair member (hostname) of a dual VIOS Regards, Siva (3 Replies)
Discussion started by: ksgnathan
3 Replies

6. Shell Programming and Scripting

Sort files as pair file

Hello, I am wondering if there is a way to sort file in directory by pair name : I am looking to get the extension .txt above the .archlike this if possible liste_NATIVE_HINDCAST_PSY1V2R2_R20120314.txt flag.NATIVE_HINDCAST_PSY1V2R2.R20120314.arch... (4 Replies)
Discussion started by: Aswex
4 Replies

7. Shell Programming and Scripting

Parsing with Name value pair and creating a normalized file

I have url string as follows and I need to parse the name value pair into fields /rows event_id date time payload 1329130951 20120214 22.30.40... (1 Reply)
Discussion started by: smee
1 Replies

8. Shell Programming and Scripting

Parsing of file for Report Generation (String parsing and splitting)

Hey guys, I have this file generated by me... i want to create some HTML output from it. The problem is that i am really confused about how do I go about reading the file. The file is in the following format: TID1 Name1 ATime=xx AResult=yyy AExpected=yyy BTime=xx BResult=yyy... (8 Replies)
Discussion started by: umar.shaikh
8 Replies
Login or Register to Ask a Question