Sponsored Content
Top Forums UNIX for Beginners Questions & Answers awk unable to print array next to each other Post 303045740 by RudiC on Saturday 11th of April 2020 10:28:53 AM
Old 04-11-2020
It is possible, yes. Try



Code:
awk '
BEGIN           {HCNT = split ("vc_MessageInformation|vc_AdditionalInfo|Result Code|AVP name|Message Type|Application Server Name", COLN, "|")
                 TMP  = split ("40 40 22 12 16 25", 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]
                }
' file


It first gets the header and fields' definition into the COLS array, and the respective lengths into FLEN to be used when formatting the fields with the "dynamic" field wifth and precision specifiers in FMT. Then, the header is printed, supplemented by the "Count" field header.
In the main block, the actual line is searched, item by item, for the header keywords plus their values. The latter are extracted into a TMP variable and collected into the OUTput line. After the line is complete, a counter array is incremented.
In the END section, the counter array is printed, index (= output lines) first, then count values. Be aware that the order of the array element retrieval is undefined in awk.
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
split(1)						      General Commands Manual							  split(1)

NAME
split - split a file into pieces SYNOPSIS
line_count] suffix_length] [file [name]] nsuffix_length] [file [name]] Obsolescent n] [file [name]] DESCRIPTION
reads file and writes it in pieces (default 1000 lines) onto a set of output files. The name of the first output file is name with appended, and so on lexicographically, up to (only ASCII letters are used, a maximum of 676 files). If no output name is given, is the default. If no input file is given, or if is given instead, the standard input file is used. Options recognizes the following command-line options and arguments: The input file is split into pieces line_count lines in size. suffix_length letters are used to form the suffix of the output filenames. This option allows creation of more than 676 output files. The output file names created cannot exceed the maximum file name length allowed in the directory containing the files. The input file is split into pieces n bytes in size. The input file is split into pieces n x 1024 bytes in size. No space separates the n from the The input file is split into pieces n x 1048576 bytes in size. No space separates the n from the The input file is split into pieces n lines in size. This option is obsolescent and is equivalent to using the option. EXTERNAL INFLUENCES
Environment Variables determines the locale for the interpretation of text as single- and/or multi-byte characters. determines the language in which messages are displayed. If or is not specified in the environment or is set to the empty string, the value of is used as a default for each unspecified or empty variable. If is not specified or is set to the empty string, a default of "C" (see lang(5)) is used instead of If any internationalization variable contains an invalid setting, behaves as if all internationalization variables are set to "C". See environ(5). International Code Set Support Single- and multi-byte character code sets are supported. SEE ALSO
csplit(1). STANDARDS CONFORMANCE
split(1)
All times are GMT -4. The time now is 08:14 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy