awk '
BEGIN {
soup = "Group A,Group B,Group C,Group D,Group E"
nlist = split( soup, list, "," );
}
NR != FNR {
# some other processing for file2
next;
}
# ----------- blocks for processing file 1 ------------------------
/XYZ/ { Var1++; } # count lines with XYZ
/^<x / {
str = gensub(/(.+")([0-9]+)(">)(.+)(<\/.+)/, "\\2|\\4", "g")
split( str, a, "|" );
agroup[a[2]] = a[1];
# your original code
B[gensub(/pattern/,"how","g")] #Storing desired data in array B
C[gensub(/pattern/,"how","g")] # #Storing desired data in array C
# small change to match D with A
dgroup[a[2]] = gensub(/pattern/, "\\2|\\4", "g") # #Storing desired data in array D
next;
}
/^<\/group>/ {
for( i = 1; i <= nlist; i++ ) # end of group, it is now safe to fill in D and A
{
A[++aidx] = sprintf( "%d|%s", agroup[list[i]], list[i] );
D[aidx] = dgroup[list[i]];
}
delete agroup;
delete dgroup;
next;
}
END {
for( i = 1; i <= length( A ); i++ ) # my testing to ensure they align
printf( "(%s) (%s)\n", A[i], D[i] );
}
' file1 file2
Notice the change to process FNR != NR so that later rules for the first file can be separate blocks.
There was one bug in the sample you posted. You incremented c twice in the same block of code. The result would have been that the array A would have had values stored with odd indexes, and D would have values stored starting at 2 with even indexes. The code above doesn't have this issue, and ensures that the values in array D match the values in array A -- they aren't in the order seen in the input, but the order that matches the list in the BEGIN block.
:)
Suppose,I have one table A. Table A have one column. Table A have 10 rows. I want this 10 rows store into shell script variable.
like
#!/bin/ksh
v_shell_var=Hi
here in call oracle , through loop How can I store table A's 10 rows into v_shell_var (Shell Script Array).
Regards,
Div (4 Replies)
I am trying to assign a awk array for further processing later in the script. I can't seem to figure it out. If someone could look at this and help me, I would very much appreciate it.
Thanks in Advance.
for ( x = 1 ; x <= Var ; x++ ) {
if ( x in varr ) {
... (2 Replies)
Dear all,
I have a file having the following formats:
ThreadFail=Web1=1234
ThreadFail=Web2=2345
ThreadFail=Web3=12
ConnectionFail=DB1=11
ConnectionFail=DB2=22
The number of lines will be different from every time . How can I parse the file and store the result to an a array inside... (6 Replies)
I want to pass an array of variables to be inserted by awk in the 2nd column of a file.
Empl No. Employee Age
1000000 22
1100000 24
1200000 26
Now, I want to pass an array having three different ages which need to replace the... (7 Replies)
I want to create an array which can store the strings from the user input in shell script .
example :-
I want to store the 5 fruits name in a single array which the user provides . (1 Reply)
Hi everybody
I wanna store some values that r in a .txt file in some arrays
for example I have:
32782 28
32783 02
32784 01
32785 29
32786 25
32787 25
32788 00
32789 25
32790 02
32791 29
32792 23
32793 01
32794 28
and I need to save the first... (4 Replies)
Hello All,
Can you please help me with the below.
#!/bin/bash
ARR="No Differences In Stage Between HASH_TOTALS & HASH_TOTALS_COMP For UNINUM:0722075 PROVIDER:5 EXTRACT_DT:30-SEP-12 VER_NUM:1"
ARR="No Differences In Stage Between HASH_TOTALS & HASH_TOTALS_COMP For UNINUM:0722075 PROVIDER:5... (14 Replies)
Hello,
I have searched but failed to find what exactly im looking for,
I need to eliminate first "." in a output so i can use something like the following
echo "./abc/20141127" | nawk '{gsub("^.","");print}'
what i want is to use gsub result later on, how could i achieve it?
Let say... (4 Replies)
Discussion started by: EAGL€
4 Replies
LEARN ABOUT MOJAVE
getgrouplist
GETGROUPLIST(3) BSD Library Functions Manual GETGROUPLIST(3)NAME
getgrouplist -- calculate partial group access list
LIBRARY
Standard system libraries.
SYNOPSIS
#include <unistd.h>
int
getgrouplist(const char *name, int basegid, int *groups, int *ngroups);
DESCRIPTION
The getgrouplist() function obtains information from opendirectoryd(8) to construct the group access list for the user specified in name.
The basegid is automatically included in the groups list. Typically this value is given as the default group number from the user's account
record.
The resulting group list is returned in the array pointed to by groups. The caller specifies the size of the groups array in the integer
pointed to by ngroups; the actual number of groups found is returned in ngroups.
RETURN VALUES
The getgrouplist() function returns 0 on success. If the size of the group list is too small to hold all the user's groups, getgrouplist()
returns -1 to indicate failure. In this case, the group array will be filled with as many groups as will fit.
FILES
/etc/group group membership list
SEE ALSO setgroups(2), initgroups(3), opendirectoryd(8).
HISTORY
The getgrouplist() function first appeared in 4.4BSD.
BSD June 9, 1993 BSD