Print string after the word match

Hi,

I have the logs :

cat logsx.txt

744906,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":1442755910,"expiryDate":{"volume":"23-11-2013T02:00:22"},"previousExpiryDate":{"time":"02-10-2013T06:14:21","volume":"23-10-2013T02:00:10"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"no","subsGName":"Matrix_1GB_16","subscriptionDate":"02-10-2013T06:14:21","validityTime":1178681},{"absoluteAccumulated":{"bidirVol":102098178,"previousExpiryDate":{"time":"09-11-2013T10:53:00","volume":"09-11-2013T10:53:00"}},"restartInfo":"09-11-2013T10:53","selected":"yes","subsGName":"1GB7D0800","subscriptionDate":"09-11-2013T10:53:00","validityTime":0}],"version":"2.0"}
678874,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":1318102561,"expiryDate":{"volume":"23-11-2013T02:00:20"},"previousExpiryDate":{"time":"02-10-2013T03:12:17","volume":"23-10-2013T02:00:02"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"no","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T03:12:17","validityTime":1051965},{"absoluteAccumulated":{"bidirVol":20004753,"previousExpiryDate":{"time":"10-11-2013T21:54:00","volume":"10-11-2013T21:54:00"}},"restartInfo":"10-11-2013T21:54","selected":"yes","subsGName":"1GB7D0800","subscriptionDate":"10-11-2013T21:54:00","validityTime":0}],"version":"2.0"}
193571,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":777438189,"expiryDate":{"volume":"08-12-2013T02:00:52"},"previousExpiryDate":{"time":"06-10-2013T18:23:34","volume":"08-11-2013T02:00:17"},"resetPeriod":{"volume":"monthly day 8 02:00"}},"selected":"yes","subsGName":"Go28_8","subscriptionDate":"06-10-2013T18:23:34","validityTime":2329299},{"absoluteAccumulated":{"bidirVol":1078862229,"previousExpiryDate":{"time":"01-11-2013T18:19:00","volume":"01-11-2013T18:19:00"}},"restartInfo":"01-11-2013T18:19","selected":"no","subsGName":"1GB7D0800","subscriptionDate":"01-11-2013T18:19:00","validityTime":0}],"version":"2.0"}
811537,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":204352282,"expiryDate":{"volume":"23-11-2013T02:00:39"},"previousExpiryDate":{"time":"02-10-2013T09:45:22","volume":"23-10-2013T02:00:06"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"yes","subsGName":"Matrix_2GB_16","subscriptionDate":"02-10-2013T09:45:22","validityTime":995066}],"version":"2.0"}
772024,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":32687329,"expiryDate":{"volume":"23-11-2013T02:00:15"},"previousExpiryDate":{"time":"02-10-2013T16:42:02","volume":"23-10-2013T02:00:57"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"yes","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T16:42:02","validityTime":1241216}],"version":"2.0"}
732724,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":109926510,"expiryDate":{"volume":"23-11-2013T02:00:03"},"previousExpiryDate":{"time":"02-10-2013T03:05:19","volume":"23-10-2013T02:00:49"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"no","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T03:05:19","validityTime":994852}],"version":"2.0"}
983366,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":86051166,"expiryDate":{"volume":"23-10-2013T02:00:25"},"previousExpiryDate":{"time":"02-10-2013T03:07:52","volume":"02-10-2013T03:07:52"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"yes","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T03:07:52","validityTime":223910}],"version":"2.0"}

I want the results will be like this:

number,bidirVol1,subsGName1,bidirVol2,subsGName2
744906,Matrix_1GB_16,1442755910,102098178,1GB7D0800
678874,Matrix_5GB_16,1318102561,20004753,1GB7D0800
193571,Go28_8,777438189,1078862229,1GB7D0800
811537,Matrix_2GB_16,204352282
772024,Matrix_5GB_16,32687329
732724,Matrix_5GB_16,109926510
983366,Matrix_5GB_16,86051166

Anybody can help ?
Thanks

The data you say you want in the results doesn't match the headings in the 2nd and 3rd fields of your output. If the output you really want is:

number,bidirVol1,subsGName1,bidirVol2,subsGName2
744906,1442755910,Matrix_1GB_16,102098178,1GB7D0800
678874,1318102561,Matrix_5GB_16,20004753,1GB7D0800
193571,777438189,Go28_8,1078862229,1GB7D0800
811537,204352282,Matrix_2GB_16
772024,32687329,Matrix_5GB_16
732724,109926510,Matrix_5GB_16
983366,86051166,Matrix_5GB_16

(which has bidirVol values from your sample data under the bidirVol1 header and subsGName values from your sample data under the subsGName1 header) the following seems to work:

awk -F '[^_[:alnum:]]*' '
BEGIN { printf("number,bidirVol1,subsGName1,bidirVol2,subsGName2\n") }
{       printf("%s", $1)
        for(i = 2; i < NF; i++)
                if($i == "bidirVol" || $i == "subsGName")
                        printf(",%s", $(i+1))
        printf("\n")
}' logsx.txt

If you want to run this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk , /usr/xpg6/bin/awk , or nawk .

1 Like
[root@client ~] sed -n ' s/[":[{,}]/ /pg'  logsx.txt > finallogsx.txt ; awk \
'BEGIN {OFS="," ;print "number,bidirVol1,subsGName1,bidirVol2,subsGName2"}{print $1, $30, \
$5,$39,$55} ' finallogsx.txt 

number,bidirVol1,subsGName1,bidirVol2,subsGName2
744906,Matrix_1GB_16,1442755910,102098178,1GB7D0800
678874,Matrix_5GB_16,1318102561,20004753,1GB7D0800
193571,Go28_8,777438189,1078862229,1GB7D0800
811537,Matrix_2GB_16,204352282,2.0,
772024,Matrix_5GB_16,32687329,2.0,
732724,Matrix_5GB_16,109926510,2.0,
983366,Matrix_5GB_16,86051166,2.0,

Thank you all. But i have try the scripts but unexpected. Sorry for make confusing.

The completed logs :

cat logsx.txt
744906,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":1442755910,"expiryDate":{"volume":"23-11-2013T02:00:22"},"previousExpiryDate":{"time":"02-10-2013T06:14:21","volume":"23-10-2013T02:00:10"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"no","subsGName":"Matrix_1GB_16","subscriptionDate":"02-10-2013T06:14:21","validityTime":1178681},{"absoluteAccumulated":{"bidirVol":102098178,"previousExpiryDate":{"time":"09-11-2013T10:53:00","volume":"09-11-2013T10:53:00"}},"restartInfo":"09-11-2013T10:53","selected":"yes","subsGName":"1GB7D0800","subscriptionDate":"09-11-2013T10:53:00","validityTime":0}],"version":"2.0"}
678874,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":1318102561,"expiryDate":{"volume":"23-11-2013T02:00:20"},"previousExpiryDate":{"time":"02-10-2013T03:12:17","volume":"23-10-2013T02:00:02"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"no","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T03:12:17","validityTime":1051965},{"absoluteAccumulated":{"bidirVol":20004753,"previousExpiryDate":{"time":"10-11-2013T21:54:00","volume":"10-11-2013T21:54:00"}},"restartInfo":"10-11-2013T21:54","selected":"yes","subsGName":"1GB7D0800","subscriptionDate":"10-11-2013T21:54:00","validityTime":0}],"version":"2.0"}
193571,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":777438189,"expiryDate":{"volume":"08-12-2013T02:00:52"},"previousExpiryDate":{"time":"06-10-2013T18:23:34","volume":"08-11-2013T02:00:17"},"resetPeriod":{"volume":"monthly day 8 02:00"}},"selected":"yes","subsGName":"Go28_8","subscriptionDate":"06-10-2013T18:23:34","validityTime":2329299},{"absoluteAccumulated":{"bidirVol":1078862229,"previousExpiryDate":{"time":"01-11-2013T18:19:00","volume":"01-11-2013T18:19:00"}},"restartInfo":"01-11-2013T18:19","selected":"no","subsGName":"1GB7D0800","subscriptionDate":"01-11-2013T18:19:00","validityTime":0}],"version":"2.0"}
811537,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":204352282,"expiryDate":{"volume":"23-11-2013T02:00:39"},"previousExpiryDate":{"time":"02-10-2013T09:45:22","volume":"23-10-2013T02:00:06"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"yes","subsGName":"Matrix_2GB_16","subscriptionDate":"02-10-2013T09:45:22","validityTime":995066}],"version":"2.0"}
772024,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":32687329,"expiryDate":{"volume":"23-11-2013T02:00:15"},"previousExpiryDate":{"time":"02-10-2013T16:42:02","volume":"23-10-2013T02:00:57"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"yes","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T16:42:02","validityTime":1241216}],"version":"2.0"}
732724,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":109926510,"expiryDate":{"volume":"23-11-2013T02:00:03"},"previousExpiryDate":{"time":"02-10-2013T03:05:19","volume":"23-10-2013T02:00:49"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"no","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T03:05:19","validityTime":994852}],"version":"2.0"}
983366,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":86051166,"expiryDate":{"volume":"23-10-2013T02:00:25"},"previousExpiryDate":{"time":"02-10-2013T03:07:52","volume":"02-10-2013T03:07:52"},"resetPeriod":{"volume":"monthly day 23 02:00"}},"selected":"yes","subsGName":"Matrix_5GB_16","subscriptionDate":"02-10-2013T03:07:52","validityTime":223910}],"version":"2.0"}
710053,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":0,"dlVolume":0,"expiryDate":{"volume":"08-12-2013T02:00:43"},"previousExpiryDate":{"time":"03-10-2013T14:52:13","volume":"08-11-2013T02:00:43"},"resetPeriod":{"volume":"monthly day 8 02:00"},"ulVolume":0},"selected":"yes","subsGName":"Matrix_5GB_8","subscriptionDate":"03-10-2013T14:52:13","validityTime":2290547}],"version":"2.0"}
789319,{"reportingGroups":[{"absoluteAccumulated":{"bidirVol":1073743863,"previousExpiryDate":{"time":"31-10-2013T19:17:00","volume":"31-10-2013T19:17:00"}},"restartInfo":"31-10-2013T19:17","selected":"no","subsGName":"1GB7DAY","subscriptionDate":"31-10-2013T19:17:00","validityTime":0}],"version":"2.0"}


There are some line has 2 "bidirVol" and 2 "subsGName" and some line got 1 "bidirVol" and 1 "subsGName". Actually the idea just want to print after string "bidirVol" and "subsGName".

So the results will be like this :

number,bidirVol1,subsGName1,bidirVol2,subsGName2,
744906,1442755910,Matrix_1GB_16,102098178,1GB7D0800
678874,1318102561,Matrix_5GB_16,20004753,1GB7D0800
193571,777438189,Go28_8,1078862229,1GB7D0800
811537,204352282,Matrix_2GB_16
772024,32687329,Matrix_5GB_16
732724,109926510,Matrix_5GB_16
983366,86051166,Matrix_5GB_16
710053,0,Matrix_5GB_8
789319,1073743863,1GB7DAY

With your modified input, the difference between the output produced by the awk script I provided and the output you specified above is that my script omits the comma at the end of the 1st line of output (marked in red above). Your earlier requirements did not include that comma (and I don't' see a need for it now).

If that isn't the output you got from my script with this input:

  1. what output did you get. and
  2. what operating system are you using (output from uname -a )?

[] It's work now. I think because of the results i write manually. I can manage to correct it.
[
] I use Linux machine.

Thanks Don :wink: