Sponsored Content
Top Forums Shell Programming and Scripting Parsing the longest match substring Post 302992830 by RudiC on Thursday 2nd of March 2017 06:26:10 AM
Old 03-02-2017
Stealing from and simplifying Don Cragun's approach - try
Code:
awk -F// -v OFS="\t\t" '
FNR == NR       {l = length($0)
                 pat[l] = pat[l] DL[l] $0
                 DL[l]  = "|"
                 MX = l>MX?l:MX
                 next
                }

                {for (i=MX; i>0; i--)   {if (pat[i] && match($1, pat[i]))       {print $0, substr($1, RSTART, RLENGTH)
                                                                                 next
                                                                                }
                                        }
                 print $0, "No match"
                }
' primary scrambled

This User Gave Thanks to RudiC For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Finding longest common substring among filenames

I will be performing a task on several directories, each containing a large number of files (2500+) that follow a regular naming convention: YYYY_MM_DD_XX.foo_bar.A.B.some_different_stuff.EXT What I would like to do is automatically discover the part of the filenames that are common to all... (1 Reply)
Discussion started by: cmcnorgan
1 Replies

2. Shell Programming and Scripting

Parsing file to match strings

I have a file with the following format 12g data/datasets/cct 8g data/dataset/cct 10 g data/two 5g data/something_different 10g something_different 5g data/two is there a way to loop through this... (1 Reply)
Discussion started by: yawalias
1 Replies

3. Shell Programming and Scripting

Awk Array doesnt match for substring

Awk Array doesnt match for substring nawk -F"," 'FNR==NR{a=$2 OFS $3;next} a{print $1,$2,a}' OFS="," file1 file2 I want cluster3 in file1 to match with cluster3int in file2 output getting: Output required: Help is appreciated (8 Replies)
Discussion started by: pinnacle
8 Replies

4. Shell Programming and Scripting

shell script: longest match from right?

Return the position of matched string from right, awk match can do from left only. e.g return pos 7 for search string "service" from "AA-service" or return the matched string "service", then caculate the string length. Thanks!. (3 Replies)
Discussion started by: honglus
3 Replies

5. Shell Programming and Scripting

Substring match

Hi, I want to find a file / directory with the name xxxxCELLxxx in the given path. The CELL is can be either in a UPPER or lower case. Thanks (4 Replies)
Discussion started by: youknowme
4 Replies

6. Shell Programming and Scripting

Longest word in a file

I am trying to write a command on just one line, i.e seperated by ';' and '|' etc, that finds the number of characters in the longest word of a file, preferably using the 'tr' and 'wc' commands. i no that wc shows the number of lines words and characters in a file but im not sure how to use it... (5 Replies)
Discussion started by: scotty85
5 Replies

7. UNIX for Dummies Questions & Answers

Deleting files based on Substring match

In folder there are files (eg ABS_18APR2012_XYZ.csv DSE_17APR2012_ABE.csv) . My requirement is to delete all the files except today's timestamp I tried doing this to list all the files not having today's date timestamp #!/bin/ksh DATE=`date +"%d%h%Y"` DIR=/data/rfs/... (9 Replies)
Discussion started by: manushi88
9 Replies

8. Shell Programming and Scripting

Match substring from a column of the second file

I want to merge the lines by matching substring of the first file with first column of the second file. file1: S00739A_ACAGTG_L001_R1.fq.gz S00739A_ACAGTG_L001_R2.fq.gz S00739B_GCCAAT_L001_R1.fq.gz S00739B_GCCAAT_L001_R2.fq.gz S00739D_GTGAAA_L001_R1.fq.gz S00739D_GTGAAA_L001_R2.fq.gz... (14 Replies)
Discussion started by: yifangt
14 Replies

9. Shell Programming and Scripting

Match text to lines in a file, iterate backwards until text or text substring matches, print to file

hi all, trying this using shell/bash with sed/awk/grep I have two files, one containing one column, the other containing multiple columns (comma delimited). file1.txt abc12345 def12345 ghi54321 ... file2.txt abc1,text1,texta abc,text2,textb def123,text3,textc gh,text4,textd... (6 Replies)
Discussion started by: shogun1970
6 Replies

10. UNIX for Beginners Questions & Answers

Replace substring by longest string in common field (awk)

Hi, Let's say I have a pipe-separated input like so: name_10|A|BCCC|cat_1 name_11|B|DE|cat_2 name_10|A|BC|cat_3 name_11|B|DEEEEEE|cat_4 Using awk, for records with common field 2, I am trying to replace all the shortest substrings by the longest string in field 3. In order to get the... (5 Replies)
Discussion started by: beca123456
5 Replies
VISGREP(1)						      General Commands Manual							VISGREP(1)

NAME
visgrep - Visual grep, greps for images in another image SYNOPSIS
visgrep [options] image.png detect.pat match.pat ... DESCRIPTION
visgrep is a program that greps for image in another image. All .pat files are created using png2pat(1) or rgb2pat(1). The image.png is scanned for detect.pat starting from X,Y given in parameters. When detect.pat is found, then all the match.pat files are scanned at an offset of x,y given in parameters. If a match is found, then vis- grep prints the x,y and index of the item. For example, image.png is a screenshot and match1.pat .. match5.pat are images of letters a to e. Each of these letters is enclosed in a blue box, so detect.pat is an image of the upper left corner of the box. This box is not included in the match*.pat files, so they are actually offset 5 pixels down and 4 pixels to the left. You might run it like this then: visgrep -x-4 -y5 image.png match_corner.pat match_a.pat match_b.bat ... Etc, with all matches listed. Now suppose the screen showed ace so visgrep might output: 10,10 0 50,10 2 90,10 4 Showing that match_a.pat (index 0) is at 10,10 on the screen. If no match is found even though the detection image is found, the index will be -1. OPTIONS
A summary of options is included below. -h Show summary of options. -x Set x offset for detection matching. -y Set y offset for detection matching. -X Start scanning at X. -Y Start scanning at Y. -t Set tolerance for 'fuzzy' matches, higher numbers are more tolerant. EXIT STATUS
0 at least one match was made. 1 no matches were made. 2 an error occured. SEE ALSO
pat2ppm(1), patextract(1), png2pat(1), rgb2pat(1), xte(1). AUTHOR
visgrep was written by Steve Slaven <bpk@hoopajoo.net>. This manual page was written by Aurelien Jarno <aurel32@debian.org>, for the Debian project (but may be used by others). April 20, 2004 VISGREP(1)
All times are GMT -4. The time now is 05:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy