Sponsored Content
Top Forums UNIX for Beginners Questions & Answers (g)awk: Matching strings from one file in another file between two strings Post 303028108 by RudiC on Monday 31st of December 2018 04:59:43 AM
Old 12-31-2018
So we have learned that posting correct specs AND samples (admittedly, ALSO reading them) saves time and effort on all sides. With a single * line separating blocks, the "STARONE" identification token can be dropped. Try





Code:
awk '
NR==FNR   {T[$1,$2]
           next
          }
/^ *\*/   {if (PR1 && PR2)   {print BUF
                              print
                             }
           PR1 = PR2 = 0
           BUF = ""
           next
          }

          {BUF = BUF (BUF?ORS:_) $0
           if (($1,$2) in T) PR1 = 1
           if ($22 == 503)   PR2 = 1
          }

 ' file1 file2
 PS004,002 XNN                 0   1  1  0  1 -1 -1    3  2  1  2    -1   1   1  -1      -1      -1      -1    0  501     0
 PS004,002 NJ                 -1   7 -1 -1 -1 -1 -1   -1  1  1 -1    -1   7   7   2      -1      -1      -1    0  503     0
           * 0 -3 200 1 201 2 103 18 163 22 123 0 0 .. 0 LineNr 8 ClauseNr 1: 1: 2: 103: 0 0 SentenceNr 3 TxtType: Q Pargr: 2 ClType:ZIm0


Last edited by RudiC; 12-31-2018 at 06:11 AM..
This User Gave Thanks to RudiC For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

AWK- delimiting the strings and matching the fields

Hello, I am newbie in awk. I have just started learning it. 1) I have input file which looks like: {4812 4009 1602 2756 306} {4814 4010 1603 2757 309} {8116 9362 10779 } {10779 10121 9193 10963 10908} {1602 2756 306 957 1025} {1603 2757 307} and so on..... 2) In output: a)... (10 Replies)
Discussion started by: kajolo
10 Replies

2. Shell Programming and Scripting

Delete lines in file containing duplicate strings, keeping longer strings

The question is not as simple as the title... I have a file, it looks like this <string name="string1">RZ-LED</string> <string name="string2">2.0</string> <string name="string2">Version 2.0</string> <string name="string3">BP</string> I would like to check for duplicate entries of... (11 Replies)
Discussion started by: raidzero
11 Replies

3. UNIX for Dummies Questions & Answers

Extraction of strings from a file, after pattern matching

I need to extract strings from a file. The file contains data like: Plan ABCD IN-+-172BB---118C2C---GGN_342-+-MM77_23--+-LAS24_3|GGK_774 | | \-LAS24_2|GGN_774 | +-AA_800_1-+-BAS_000|GGK_362 | | \-BAS_001|GGK_360 | \-DD_000T1---DAM_001|STEEL_0 Plan SHELL_1... (3 Replies)
Discussion started by: abkush
3 Replies

4. Shell Programming and Scripting

Extract two strings from a file and create a new file with these strings

I have the following lines in a log file. It would be great if some one can help me to create a new file with the just entries in the below format. 66.150.161.195 HPSAC=Z05 66.150.161.196 HPSAC=A05 That is just extract the IP address and the string DPSAC=its value 66.150.161.195 -... (1 Reply)
Discussion started by: Tuxidow
1 Replies

5. Shell Programming and Scripting

Need to append matching strings in a file

Hi , I am writing a shell script to check pvsizes in linux box. # for i in `cat vgs1` > do > echo "########### $i ###########" > pvs|grep -i $i|awk '{print $2,$1,$5}'>pvs_$i > pvs|grep -i $i|awk '{print $1}'|while read a > do > fdisk -l $a|head -2|tail -1|awk '{print $2,$3}'>pvs_$i1 >... (3 Replies)
Discussion started by: nanduri
3 Replies

6. Shell Programming and Scripting

awk extract strings matching multiple patterns

Hi, I wasn't quite sure how to title this one! Here goes: I have some already partially parsed log files, which I now need to extract info from. Because of the way they are originally and the fact they have been partially processed already, I can't make any assumptions on the number of... (8 Replies)
Discussion started by: chrissycc
8 Replies

7. UNIX for Dummies Questions & Answers

1st time awk user strings not matching right....

So I was given a file,and I want to count how many occurrences happen with a specific string. I have two, that could have up to 3 different outcomes. Now my trouble I believe starts with this string, "news.cais.net" but why? as of now my output is this... accepted rejected ... (3 Replies)
Discussion started by: squidGreen
3 Replies

8. Shell Programming and Scripting

Output counts of all matching strings lessthan a number using awk

The awk below is supposed to count all the matching $5 strings and count how many $7 values is less than 20. I don't think I need the portion in bold as I do not need any decimal point or format, but can not seem to get the correct counts. Thank you :). file chr5 77316500 77316628 ... (6 Replies)
Discussion started by: cmccabe
6 Replies

9. UNIX for Beginners Questions & Answers

How to pass strings from a list of strings from another file and create multiple files?

Hello Everyone , Iam a newbie to shell programming and iam reaching out if anyone can help in this :- I have two files 1) Insert.txt 2) partition_list.txt insert.txt looks like this :- insert into emp1 partition (partition_name) (a1, b2, c4, s6, d8) select a1, b2, c4, (2 Replies)
Discussion started by: nubie2linux
2 Replies

10. UNIX for Beginners Questions & Answers

Use strings from nth field from one file to match strings in entire line in another file, awk

I cannot seem to get what should be a simple awk one-liner to work correctly and cannot figure out why. I would like to use patterns from a specific field in one file as regex to search for matching strings in the entire line ($0) of another file. I would like to output the lines of File2 which... (1 Reply)
Discussion started by: jvoot
1 Replies
PDLACONSB(l)						   LAPACK routine (version 1.5 )					      PDLACONSB(l)

NAME
PDLACONSB - look for two consecutive small subdiagonal elements by seeing the effect of starting a double shift QR iteration given by H44, H33, & H43H34 and see if this would make a subdiagonal negligible SYNOPSIS
SUBROUTINE PDLACONSB( A, DESCA, I, L, M, H44, H33, H43H34, BUF, LWORK ) INTEGER I, L, LWORK, M DOUBLE PRECISION H33, H43H34, H44 INTEGER DESCA( * ) DOUBLE PRECISION A( * ), BUF( * ) PURPOSE
PDLACONSB looks for two consecutive small subdiagonal elements by seeing the effect of starting a double shift QR iteration given by H44, H33, & H43H34 and see if this would make a subdiagonal negligible. Notes ===== Each global data object is described by an associated description vector. This vector stores the information required to establish the mapping between an object element and its corresponding process and memory location. Let A be a generic term for any 2D block cyclicly distributed array. Such a global array has an associated description vector DESCA. In the following comments, the character _ should be read as "of the global array". NOTATION STORED IN EXPLANATION --------------- -------------- -------------------------------------- DTYPE_A(global) DESCA( DTYPE_ )The descriptor type. In this case, DTYPE_A = 1. CTXT_A (global) DESCA( CTXT_ ) The BLACS context handle, indicating the BLACS process grid A is distribu- ted over. The context itself is glo- bal, but the handle (the integer value) may vary. M_A (global) DESCA( M_ ) The number of rows in the global array A. N_A (global) DESCA( N_ ) The number of columns in the global array A. MB_A (global) DESCA( MB_ ) The blocking factor used to distribute the rows of the array. NB_A (global) DESCA( NB_ ) The blocking factor used to distribute the columns of the array. RSRC_A (global) DESCA( RSRC_ ) The process row over which the first row of the array A is distributed. CSRC_A (global) DESCA( CSRC_ ) The process column over which the first column of the array A is distributed. LLD_A (local) DESCA( LLD_ ) The leading dimension of the local array. LLD_A >= MAX(1,LOCr(M_A)). Let K be the number of rows or columns of a distributed matrix, and assume that its process grid has dimension p x q. LOCr( K ) denotes the number of elements of K that a process would receive if K were distributed over the p processes of its process col- umn. Similarly, LOCc( K ) denotes the number of elements of K that a process would receive if K were distributed over the q processes of its process row. The values of LOCr() and LOCc() may be determined via a call to the ScaLAPACK tool function, NUMROC: LOCr( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ), LOCc( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ). An upper bound for these quantities may be computed by: LOCr( M ) <= ceil( ceil(M/MB_A)/NPROW )*MB_A LOCc( N ) <= ceil( ceil(N/NB_A)/NPCOL )*NB_A ARGUMENTS
A (global input) DOUBLE PRECISION array, dimension (DESCA(LLD_),*) On entry, the Hessenberg matrix whose tridiagonal part is being scanned. Unchanged on exit. DESCA (global and local input) INTEGER array of dimension DLEN_. The array descriptor for the distributed matrix A. I (global input) INTEGER The global location of the bottom of the unreduced submatrix of A. Unchanged on exit. L (global input) INTEGER The global location of the top of the unreduced submatrix of A. Unchanged on exit. M (global output) INTEGER On exit, this yields the starting location of the QR double shift. This will satisfy: L <= M <= I-2. H44 H33 H43H34 (global input) DOUBLE PRECISION These three values are for the double shift QR iteration. BUF (local output) DOUBLE PRECISION array of size LWORK. LWORK (global input) INTEGER On exit, LWORK is the size of the work buffer. This must be at least 7*Ceil( Ceil( (I-L)/HBL ) / LCM(NPROW,NPCOL) ) Here LCM is least common multiple, and NPROWxNPCOL is the logical grid size. Logic: ====== Two consecutive small subdiagonal elements will stall convergence of a double shift if their product is small relatively even if each is not very small. Thus it is necessary to scan the "tridiagonal portion of the matrix." In the LAPACK algorithm DLAHQR, a loop of M goes from I-2 down to L and examines H(m,m),H(m+1,m+1),H(m+1,m),H(m,m+1),H(m-1,m-1),H(m,m-1), and H(m+2,m-1). Since these elements may be on separate processors, the first major loop (10) goes over the tridiagonal and has each node store whatever values of the 7 it has that the node owning H(m,m) does not. This will occur on a border and can happen in no more than 3 loca- tions per block assuming square blocks. There are 5 buffers that each node stores these values: a buffer to send diagonally down and right, a buffer to send up, a buffer to send left, a buffer to send diagonally up and left and a buffer to send right. Each of these buffers is actually stored in one buffer BUF where BUF(ISTR1+1) starts the first buffer, BUF(ISTR2+1) starts the second, etc.. After the values are stored, if there are any values that a node needs, they will be sent and received. Then the next major loop passes over the data and searches for two consecutive small subdiagonals. Notes: This routine does a global maximum and must be called by all processes. Implemented by: G. Henry, November 17, 1996 LAPACK version 1.5 12 May 1997 PDLACONSB(l)
All times are GMT -4. The time now is 12:11 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy