Visit Our UNIX and Linux User Community


awk unable to print array next to each other


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers awk unable to print array next to each other
# 8  
Old 04-12-2020
Dear RudC,


Can we have changes in your script according to below data..



Quote:
5339587 2020-04-12T01:52:58.604+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=SDA; vc_AdditionalInformation=Operation: Modify Error code: 20 Error Text: Type or value exists - modify/add: CDC: value #0 already exists Database server: ldap://1X.2XX.1XX.2XX:3XX
5339587 2020-04-12T01:52:58.604+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=SDA; vc_AdditionalInformation=Operation: Modify Error code: 20 Error Text: Type or value exists - modify/add: CDC: value #0 already exists Database server: ldap://1X.2XX.1XX.2XX:3XX
5339587 2020-04-12T01:52:58.604+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=SDA; vc_AdditionalInformation=Operation: Modify Error code: 20 Error Text: Type or value exists - modify/add: CDC: value #0 already exists Database server: ldap://1X.2XX.1XX.2XX:3XX
5339587 2020-04-12T01:52:58.604+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=SDA; vc_AdditionalInformation=Operation: Modify Error code: 20 Error Text: Type or value exists - modify/add: CDC: value #0 already exists Database server: ldap://1X.2XX.1XX.2XX:3XX
5339587 2020-04-12T01:52:58.604+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=SDA; vc_AdditionalInformation=Operation: Modify Error code: 20 Error Text: Type or value exists - modify/add: CDC: value #0 already exists Database server: ldap://1X.2XX.1XX.2XX:3XX
5339587 2020-04-12T01:52:58.604+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=SDA; vc_AdditionalInformation=Operation: Modify Error code: 20 Error Text: Type or value exists - modify/add: CDC: value #0 already exists Database server: ldap://1X.2XX.1XX.2XX:3XX





Quote:
vc_MessageInformation vc_AdditionalInformation Error code Error Text Database server
Failure in database operation towards the back-end Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
Failure in database operation towards the back-end Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
Failure in database operation towards the back-end Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
Failure in database operation towards the back-end Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
Failure in database operation towards the back-end Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
Failure in database operation towards the back-end Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
# 9  
Old 04-13-2020
Quote:
Originally Posted by shanul karim
.
.
.

From above description i got the idea in general.
Fine. But: You should try to get a more profound understanding.

Quote:
But if you can explain code line by line.. I mean each variable and method.

.
.
.
I don't feel this is a good approach. It would be better you check each line, variable and method yourself with the help of e.g. man awk and e.g. printing out intermediate steps / variables like COLN[i], OUT, or TMP. If you really, really get stuck with a statement or result, post back very specifically, and people may jump in.


This may seem tedious on first sight, but will be rewarding in the long run.







Quote:
Originally Posted by shanul karim
Dear RudC,


Can we have changes in your script according to below data..

Can almost certainly be done, but the input file changed profoundly: I can't tell where and how fields / values are separated; it seems all just a looong unstructured string. So, the script / logics may need to be turned upside down. On top, some fields / characters ( ; , final " ) seem missing...

Last edited by RudiC; 04-13-2020 at 07:17 AM..
# 10  
Old 04-13-2020
Thanks RudC for valuable advice


I will use same apprach


Here I tried below code


Quote:
awk '
BEGIN {HCNT = split ("vc_MessageInformation|vc_AdditionalInformation|Error code|Error Text|modify/add|Database server|ldap|", COLN, "|")
TMP = split ("50 25 10 10 10 15 5 5", FLEN)
FMT = "%-*.*s "
for (i=1; i<=HCNT; i++) printf FMT, FLEN[i], FLEN[i], COLN[i]
printf "Count" ORS
}
{OUT = ""
for (i=1; i<=HCNT; i++) {match ($0, COLN[i] "[^;,]*")
TMP = substr ($0, RSTART, RLENGTH)
sub (/^[^:]*: /, _, TMP)
OUT = OUT sprintf (FMT, FLEN[i], FLEN[i], TMP)
}
T[OUT]++
}
END {for (t in T) print t, T[t]
}
' EXDBAPP_HC_Log > EXDBAPP_HC_TEST

Result is somewhat not as expected


Quote:
vc_MessageInformation vc_AdditionalInformation Error code Error Text modify/add Database server ldap Count
vc_MessageInformation=Failure in database operatio Bind 52 unavailabl ldap://10.235.1 ldap: 53 44
vc_MessageInformation=No answer received from the Modify ldap://10.235.1 ldap: 53 2
vc_MessageInformation=Failure connecting to extern vc_AdditionalInformation= ldap://10.235.1 ldap: 53 44
vc_MessageInformation=Failure in database operatio Modify 80 Other (e.g ldap://10.235.1 ldap: 53 1551
vc_MessageInformation=Failure in database operatio Search 80 Other (e.g ldap://10.235.1 ldap: 53 138
vc_MessageInformation=No answer received from the Search ldap://10.235.1 ldap: 53 14
vc_MessageInformation=Failure in database operatio Modify 20 Type or va CDC: value ldap://10.235.1 ldap: 53 427

I have changed input file as suggested by you


Quote:
5337368 2020-04-12T00:00:00.093+0300 PL-11 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=ISM; vc_AdditionalInformation=Operation: Modify ,Error code: 20 ,Error Text: Type or value exists - modify/add: CDC: value #0 already exists ,Database server: ldap://10.235.150.231:389,Operation Info: DN :ImsImpiId=IMPI,serv=SSS,mscId=fecb5b6XXXXXXXXXXX,ou=multiSCs,dc=XXX; vc_Priority=LOG_ERR"
5337369 2020-04-12T00:00:00.108+0300 PL-9 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=ISM; vc_AdditionalInformation=Operation: Modify ,Error code: 20 ,Error Text: Type or value exists - modify/add: CDC: value #0 already exists ,Database server: ldap://10.235.150.231:389 ,Operation Info: DN :ImsImpiId=IMPI,serv=SSS,mscId=937XXXXXXXXXXX,ou=multiSCs,dc=XXX; vc_Priority=LOG_ERR"
5337370 2020-04-12T00:00:02.066+0300 PL-6 ER: "vc_MessageInformation=Failure in database operation towards the back-end; vc_ApplicationStackId=ISM; vc_AdditionalInformation=Operation: Modify ,Error code: 20 ,Error Text: Type or value exists - modify/add: CDC: value #0 already exists ,Database server: ldap://10.235.150.231:389 ,Operation Info: DN :ImsCxDynInfId=IssCxSynInf,ImsSubsId=IssDubs,serv=IMS,assocId=9XXXXXXXXXXX,ou=associations,dc=XXX; vc_Priority=LOG_ERR"
# 11  
Old 04-13-2020
There was no count specified in your changed request in post #8. This is as close as I get towards your before last specification:
Code:
awk -F";" '
BEGIN           {print HD = "vc_MessageInformation      vc_AdditionalInfo       Error code      Error Text      Database server"
                 HCNT = split (HD, COLN, "\t")
                }

                {sub (/^.*"/, _)
                 for (j=1; j<=NF; j++)  {FP = 0
                                         for (i=1; i<=HCNT; i++) FP += sub ("[ ]*" COLN[i] "[^=:]*[=:]", _, $j)
                                         if (! FP) $j = _
                                        }
                }

1
' file
vc_MessageInformation    vc_AdditionalInfo    Error code    Error Text    Database server
Failure in database operation towards the back-end  Operation: Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
Failure in database operation towards the back-end  Operation: Modify 20 Type or value exists - modify/add: CDC: value #0 already exists ldap://1X.2XX.1XX.2XX:3XX
.
.
.


Rg. your next change in spec, I'd propose you proceed as indicated in post #9: change spec and script in small steps, understand discrepancies in result and operation, and come back with very specific, detailed questions. "Result is somewhat not as expected" doesn't help to track down errors, neither yourself nor others trying to help. "Why can't the error code value be extracted or isolated" is way more targeted, don't you think? Yes, this is tedious, but the only way to get through.

Last edited by RudiC; 04-13-2020 at 08:29 AM..
This User Gave Thanks to RudiC For This Post:
# 12  
Old 04-13-2020
Thanks a lot RudC


Noted , Your advise will help me for learning better skill

Previous Thread | Next Thread
Test Your Knowledge in Computers #136
Difficulty: Easy
The IEEE named Linus Torvalds as the recipient of the IEEE Computer Society's Computer Pioneer Award in 2014.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unable to print python array in shell script loop.

I am unable to loop print a python string array in my unix shell script: ~/readarr.sh '{{ myarr }}' more readarr.sh echo "Parameter 1:"$1 MYARRAY= $1 IFS= MYARRAY=`python <<< "print ' '.join($MYARRAY)"` for a in "$MYARRAY"; do echo "Printing Array: $a" done Can you... (10 Replies)
Discussion started by: mohtashims
10 Replies

2. Shell Programming and Scripting

awk to print array that occurs the most with matching value in another field

In the below awk I am splitting $7 on the : and then counting each line or NM_xxxx. If the $1 value is the same for each line then print the $7 that occurs the most with the matching $1 value. The awk seems close but I am not sure what is going on. I included a description as well as to what I... (1 Reply)
Discussion started by: cmccabe
1 Replies

3. Shell Programming and Scripting

Not getting array in .awk file and print it

I have test.sh file as below : set -A IDARR $ID echo | awk -f test.awk -v TempArr="${IDARR }" I have test.awk file as below : BEGIN { Flag = 1; } { print "Hello"; for(i in TempArr) { print i; } } (9 Replies)
Discussion started by: nes
9 Replies

4. UNIX for Dummies Questions & Answers

How To Print Array in awk?

Hello, May i please know how do i print the array using awk script. I am using below shell script to start with but not working. #!/bin/bash LOADSTATUS="Line 0" LOADSTATUS="Line 1" LOADSTATUS="Line 2" LOADSTATUS="Line 3" LOADSTATUS="Line 4" awk ' BEGIN { Your File Load Status }... (1 Reply)
Discussion started by: Ariean
1 Replies

5. Shell Programming and Scripting

Unable To access array in awk

Hi, i have the following code in which i am passing array tldn in awk using -v option & despite of that condition is not getting matched,can somebody suggest how to handle shell arrays in awk tcount=(9875 9667) awk -F"\t" -v ltldn="${tldn}" 'NR==FNR {POSTPAIDMDNS=$2"|"$3;next} ... (6 Replies)
Discussion started by: siramitsharma
6 Replies

6. Programming

Unable to assign zero to unsigned character array

Hi, I am unable to assign value zero to my variable which is defined as unsigned char. typedef struct ABCD { unsigned char abc; unsigned char def; unsigned char ghi; } ABCD; typedef ABCD *PABCD; In my Por*C code, i assign the values using memcpy like below ... (3 Replies)
Discussion started by: gthangav
3 Replies

7. Shell Programming and Scripting

Print array into a single file - AWK

Hi all, I been looking for a solution to the fact that when I use: for (i=1; i<=NF; i++) print $ifields that are originally in a single line are printed in a single line I have severals files for which the first 7 are the same, but the number of variables after that can vary, for example NF... (5 Replies)
Discussion started by: PaulaL
5 Replies

8. Shell Programming and Scripting

awk: reading into an array and then print the value corresponding to index

I am beginner in awk awk 'BEGIN{for(i=1;(getline<"opnoise")>0;i++) arr=$1}{print arr}' In the above script, opnoise is a file, I am reading it into an array and then printing the value corresponding to index 20. Well this is not my real objective, but I have posted this example to describe... (19 Replies)
Discussion started by: akshaykr2
19 Replies

9. Solaris

Unable to access 3500 FC array. Where is the problem?..

Hi, I have two Sun Fire V490 with Solaris 10 5/08, FC switch and two Sun StorageTek 3500 FC arrays. Each array is connected to switch and to one server at a time. In the last week I installed Solaris 10 5/08 on both servers and set up Sun Cluster, version 3.2. At wednesday all was fine - all... (7 Replies)
Discussion started by: Sapfeer
7 Replies

10. Shell Programming and Scripting

Unable to set a data to array

Hi All, Iam trying to set the value to the array... Still its not happening Following is the code: #!/usr/bin/ksh filenames="x"; filenames="y"; echo $filenames; echo $filenames; O/P: x x Iam expecting (2 Replies)
Discussion started by: kiranlalka
2 Replies

Featured Tech Videos