Sponsored Content
Top Forums Shell Programming and Scripting Difficult transposing of data from profiles blocks Post 302699505 by Chubler_XL on Tuesday 11th of September 2012 09:31:24 PM
Old 09-11-2012
Wow, getting a little more complex now...Try this:

Code:
awk '
    function addval(cur, line, start, len) {
       if(!start) return cur;
       val=substr(line,start,len)
       gsub(/ /,"",val)
       if(val=="") return cur;
       return (length(cur)?cur"|":"")val
    }
    FNR!=NR&&FNR==1 {
        printf "MSISDN,IMSI,STATE,NAM"
        PROCINFO["sorted_in"] = "@ind_str_asc"
        for(i in tags) printf ",%s", i;
        printf ",VLR ADDRESS,STATE,SGSN NUMBER,STATE,APNID,EQOSID,PDPID\n"
        split("",psd);split("",ld);split("",si);nam="";vs="";ss="";sgsn=""
        apnid="";eqosid="";pdpid="";
    }
    $1=="NAM" {nam=$2}
    $1=="SGSN NUMBER" {gsub(/ *$/,"",$2);sgsn=$2;ss=$3}
    /^SUBSCRIBER IDENTITY/ { split($3,si," ")}
    /^LOCATION DATA/ { split($3,ld," "); vs=$4}
    /^PERMANENT SUBSCRIBER DATA/ {
        v=split($0,vals," ");
        for(i=3;i<=v;i++) {
           p=index(vals[i],"-")
           if(p) psd[substr(vals[i],1,p-1)]=substr(vals[i],p+1)
           if(p&&FNR==NR) tags[substr(vals[i],1,p-1)];
        }
    }
    $1~"PACKET DATA PROTOCOL" {
        apst=index($2,"APNID")
        eqst=index($2,"EQOSID")
        pdst=index($2,"PDPID")
        for(i=3;i<=NF;i++) {
            apnid=addval(apnid,$i,apst,5)
            eqosid=addval(eqosid,$i,eqst,6)
            pdpid=addval(pdpid,$i,pdst,5)
        }
    }
    /^END/ && FNR!=NR{
        printf "%s,%s,%s,%s",si[1],si[2],si[3],nam
        for(i in tags) printf ",%s", psd[i]
        printf ",%s,%s,%s,%s,%s,%s,%s\n", ld[1], vs, sgsn, ss, apnid, eqosid, pdpid
        apnid="";eqosid="";pdpid="";
        split("",psd);split("",ld);split("",si);nam="";vs="";ss="";sgsn=""}
    ' FS="\n" RS="" infile infile

This User Gave Thanks to Chubler_XL For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete blocks with no data..

Hi, I tried this but could not get it... here is what I need I have an xml where I get all the data in blocks but some times I get empty blocks with no data...shown below..I need to delete only those blocks with no data, I tried couple of ways but could not do it..any help is appreciated...... (1 Reply)
Discussion started by: mgirinath
1 Replies

2. Shell Programming and Scripting

Sorting blocks of data

Hello all, Below is what I am trying to accomplish: I have a file that looks like this /* ----------------- xxxx.y_abcd_00000050 ----------------- */ jdghjghkla sadgsdags asdgsdgasd asdgsagasdg /* ----------------- xxxx.y_abcd_00000055 ----------------- */ sdgsdg sdgxcvzxcbv... (8 Replies)
Discussion started by: alfredo123
8 Replies

3. UNIX for Dummies Questions & Answers

Transposing data output

Hi, I've just created a shell script that produces the following output: hd1 hd3 hd9 /optnonaix/esp /optnonaix/app/oracle /u06 (564.67) (675.97) (678.90) I would like the output to be as hd1 /optnonaix/esp (564.67) hd3 /optnonaix/app/oracle (675.97) hd9 /u06 (678.90) Need some... (2 Replies)
Discussion started by: bazzabogan
2 Replies

4. Shell Programming and Scripting

how to split this file into blocks and then send these blocks as input to the tool called Yices?

Hello, I have a file like this: FILE.TXT: (define argc :: int) (assert ( > argc 1)) (assert ( = argc 1)) <check> # (define c :: float) (assert ( > c 0)) (assert ( = c 0)) <check> # now, i want to separate each block('#' is the delimeter), make them separate files, and then send them as... (5 Replies)
Discussion started by: paramad
5 Replies

5. Shell Programming and Scripting

transposing square matrixs or blocks in a big file

Hi I do have a big file of the following format a b c d e f g 2 3 5 6 6 6 7 3 4 5 6 7 9 0 4 5 7 8 9 9 0 1 2 4 5 6 7 8 3 5 6 7 2 3 4 5 6 7 4 3 2 4 5 4 5 6 3 5 5 r h i j k l m 2 3 4 5 6 7 8 4 5 7 8 9 9 0 3 5 6 7 2 3 4 2 3 5 6 6 6 7 5 5 7 8 9 2 3 1 2... (7 Replies)
Discussion started by: Lucky Ali
7 Replies

6. Shell Programming and Scripting

Help for a Perl newcomer! Transposing data from columns to rows

I have to create a Perl script which will transpose the data output from my experiment, from columns to rows, in order for me to analyse the data. I am a complete Perl novice so any help would be greatly appreciated. The data as it stands looks like this: Subject Condition Fp1 ... (12 Replies)
Discussion started by: Sarah_W
12 Replies

7. Shell Programming and Scripting

Extracting data blocks from file

Hi all, I want to extract blocks of data from a file depending on the contents of that block. The input file(table) has several blocks each starting with 'gene' in the first column. I want to extract only those blocks which do not have the expression '_T02' in the second column. Input file ... (3 Replies)
Discussion started by: newbie83
3 Replies

8. Shell Programming and Scripting

Transposing X and Y axis of CSV data

Hello list, I have a source CSV data file as follows: PC_NAME,MS11-040,MS11-039,MS11-038,MS11-035 abc123,Not Applicable,Not Applicable,Not Applicable,Not Applicable abc987,Not Applicable,Not Applicable,Not Applicable,Not Applicable tnt999,Not Applicable,Not Applicable,Applicable,Not... (2 Replies)
Discussion started by: landossa
2 Replies

9. UNIX for Dummies Questions & Answers

Delete data blocks based on missing combinations

Hello masters, I am filtering data based on completeness. A (Name , Group) combination in File2 is only complete when it has data for all subgroups specified in File1. All incomplete (Name , Group) combinations do not appear in the output. So for example , Name1 Group 1 in File2 is... (6 Replies)
Discussion started by: senhia83
6 Replies

10. Shell Programming and Scripting

Transposing data based on 1st column

I do have a big tab delimited file of the following format aa 344 456 aa 34 67 bb 34 90 bb 23 100 bb 1 89 d 0 12 e 45 678 e 78 90 e 56 90 .... .... .... I would like to transpose the data based on the category on column one and get the output file in the following tab delimited... (8 Replies)
Discussion started by: Kanja
8 Replies
SPLIT(1)							   User Commands							  SPLIT(1)

NAME
split - split a file into pieces SYNOPSIS
split [OPTION]... [INPUT [PREFIX]] DESCRIPTION
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT is -, read standard input. Mandatory arguments to long options are mandatory for short options too. -a, --suffix-length=N use suffixes of length N (default 2) -b, --bytes=SIZE put SIZE bytes per output file -C, --line-bytes=SIZE put at most SIZE bytes of lines per output file -d, --numeric-suffixes use numeric suffixes instead of alphabetic -l, --lines=NUMBER put NUMBER lines per output file --verbose print a diagnostic just before each output file is opened --help display this help and exit --version output version information and exit SIZE may be (or may be an integer optionally followed by) one of following: KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y. AUTHOR
Written by Torbjorn Granlund and Richard M. Stallman. REPORTING BUGS
Report split bugs to bug-coreutils@gnu.org GNU coreutils home page: <http://www.gnu.org/software/coreutils/> General help using GNU software: <http://www.gnu.org/gethelp/> Report split translation bugs to <http://translationproject.org/team/> COPYRIGHT
Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO
The full documentation for split is maintained as a Texinfo manual. If the info and split programs are properly installed at your site, the command info coreutils 'split invocation' should give you access to the complete manual. GNU coreutils 8.5 February 2011 SPLIT(1)
All times are GMT -4. The time now is 04:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy