Sponsored Content
Top Forums Shell Programming and Scripting Search for sequential pattern Post 302982084 by RudiC on Friday 23rd of September 2016 06:30:24 AM
Old 09-23-2016
How about
Code:
awk  -v PAT="two,three,four" '                  # define search pattern
BEGIN   {KC = split(PAT, T, ",")                # fill temp array with keywords from pattern, find key count
         RB = KC + 2                            # compute ring buffer size
        }
        {A[NR%RB] = $1                          # fill ring buffer for line number
         B[NR%RB] = $2                          # fill ring buffer for keywords
         if ($2 == T[CNT+1])    CNT++           # if keyword match found: advance to next keyword
         else                   CNT = 0         # else start again from first keyword

         if (CNT == KC) {printf "%s,", A[(NR+1)%RB]
                                                # BINGO! ALL keywords in a row! print line number

                         for (i=1; i<=2; i++) printf "%s,", B[(NR+i)%RB]
                                                # print two preceding words

                         print PAT              # print the search words 
                         CNT = 0                # and start again from first keyword
                        }
        }
' file
3,horse,one,two,three,four

 

10 More Discussions You Might Find Interesting

1. Programming

Reading special characters while converting sequential file to line sequential

We have to convert a sequential file to a 80 char line sequential file (HP UX platform).The sequential file contains special characters. which after conversion of the file to line sequential are getting coverted into "new line" or "tab" and file is getting distorted. Is there any way to read these... (2 Replies)
Discussion started by: Rajeshsu
2 Replies

2. Shell Programming and Scripting

search a pattern and if pattern found insert new pattern at the begining

I am trying to do some thing like this .. In a file , if pattern found insert new pattern at the begining of the line containing the pattern. example: in a file I have this. gtrow0unit1/gctunit_crrownorth_stage5_outnet_feedthru_pin if i find feedthru_pin want to insert !! at the... (7 Replies)
Discussion started by: pitagi
7 Replies

3. Shell Programming and Scripting

Append specific lines to a previous line based on sequential search criteria

I'll try explain this as best I can. Let me know if it is not clear. I have large text files that contain data as such: 143593502 09-08-20 09:02:13 xxxxxxxxxxx xxxxxxxxxxx 09-08-20 09:02:11 N line 1 test line 2 test line 3 test 143593503 09-08-20 09:02:13... (3 Replies)
Discussion started by: jesse
3 Replies

4. Shell Programming and Scripting

Print a pattern between the xml tags based on a search pattern

Hi all, I am trying to extract the values ( text between the xml tags) based on the Order Number. here is the sample input <?xml version="1.0" encoding="UTF-8"?> <NJCustomer> <Header> <MessageIdentifier>Y504173382</MessageIdentifier> ... (13 Replies)
Discussion started by: oky
13 Replies

5. Programming

Tool to simulate non-sequential disk I/O (simulate db file sequential read) in C POSIX

Writing a Tool to simulate non-sequential disk I/O (simulate db file sequential read) in C POSIX I have over the years come across the same issue a couple of times, and it normally is that the read speed on SAN is absolutely atrocious when doing non-sequential I/O to the disks. Problem being of... (7 Replies)
Discussion started by: vrghost
7 Replies

6. Shell Programming and Scripting

Need one liner to search pattern and print everything expect 6 lines from where pattern match made

i need to search for a pattern from a big file and print everything expect the next 6 lines from where the pattern match was made. (8 Replies)
Discussion started by: chidori
8 Replies

7. Shell Programming and Scripting

Search for a pattern in a String file and count the occurance of each pattern

I am trying to search a file for a patterns ERR- in a file and return a count for each of the error reported Input file is a free flowing file without any format example of output ERR-00001=5 .... ERR-01010=10 ..... ERR-99999=10 (4 Replies)
Discussion started by: swayam123
4 Replies

8. Shell Programming and Scripting

How to use sed to search a particular pattern in a file backward after a pattern is matched.?

Hi, I have two files file1.txt and file2.txt. Please see the attachments. In file2.txt (which actually is a diff output between two versions of file1.txt.), I extract the pattern corresponding to 1172c1172. Now ,In file1.txt I have to search for this pattern 1172c1172 and if found, I have to... (9 Replies)
Discussion started by: saurabh kumar
9 Replies

9. Shell Programming and Scripting

Extracting sequential pattern

Hi, Can someone advise/help me on how to write a script to extract sequential lines. I was able to find and get a script working to create permutations of the inputs, but that not what I want/need. awk 'function perm(p,s, i) { for(i=1;i<=n;i++) if(p==1) ... (4 Replies)
Discussion started by: fuzzi
4 Replies

10. UNIX for Beginners Questions & Answers

Grep/awk using a begin search pattern and end search pattern

I have this fileA TEST FILE ABC this file contains ABC; TEST FILE DGHT this file contains DGHT; TEST FILE 123 this file contains ABC, this file contains DEF, this file contains XYZ, this file contains KLM ; I want to have a fileZ that has only (begin search pattern for will be... (2 Replies)
Discussion started by: vbabz
2 Replies
PG(1)								   User Commands							     PG(1)

NAME
pg - browse pagewise through text files SYNOPSIS
pg [-number] [-p string] [-cefnrs] [+line] [+/pattern/] [file...] DESCRIPTION
Pg displays a text file on a CRT one screenful at once. After each page, a prompt is displayed. The user may then either press the newline key to view the next page or one of the keys described below. If no filename is given on the command line, pg reads from standard input. If the standard output is not a terminal, pg acts like cat(1) but precedes each file with its name if there is more than one. If input comes from a pipe, pg stores the data in a buffer file while reading to make navigation possible. OPTIONS
Pg accepts the following options: -number The number of lines per page. Usually, this is the number of CRT lines minus one. -c Clear the screen before a page is displayed if the terminfo entry for the terminal provides this capability. -e pg will not pause and display (EOF) at the end of a file. -f pg does not split long lines. -n Without this option, commands must be terminated by a newline character. With this option, pg advances once a command letter is entered. -p string Instead of the prompt : , string is displayed. If string contains %d , its first occurrence is replaced by the number of the cur- rent page. -r Disallow the shell escape. -s Print messages in standout mode if the terminfo entry for the terminal provides this capability. +number Start at the given line. +/pattern/ Start at the line containing the Basic Regular Expression pattern given. USAGE
The following commands may be entered at the prompt. Commands preceded by i in this document accept a number as argument, positive or nega- tive. If this argument starts with + or -, it is interpreted relative to the current position in the input file, otherwise relative to the beginning. i<newline> Display the next or the indicated page. id or ^D Display the next halfpage. If i is given, it is always interpreted relative to the current position. il Display the next or the indicated line. if Skip a page forward. i must be a positive number and is always interpreted relative to the current position. iw or iz Behave as <newline> except that i becomes the new page size. . or ^L Redraw the screen. $ Advance to the last line of the input file. i/pattern/ Search forward until the first or the i-th occurrence of the Basic Regular Expression pattern is found. The search starts after the current page and stops at the end of the file. No wrap-around is performed. i must be a positive number. i?pattern? or i^pattern^ Search backward until the first or the i-th occurrence of the Basic Regular Expression pattern is found. The search starts before the current page and stops at the beginning of the file. No wrap-around is performed. i must be a positive number. The search commands accept an added letter. If t is given, the line containing the pattern is displayed at the top of the screen, which is the default. m selects the middle and b the bottom of the screen. The selected position is used in following searches, too. in Advance to the next file or i files forward. ip Reread the previous file or i files backward. s filename Save the current file to the given filename. h Display a command summary. !command Execute command using the shell. q or Q Quit. If the user presses the interrupt or quit key while pg reads from the input file or writes on the terminal, pg will immediately display the prompt. In all other situations these keys will terminate pg. ENVIRONMENT VARIABLES
The following environment variables affect the behaviour of pg: COLUMNS Overrides the system-supplied number of columns if set. LANG, LC_ALL, LC_COLLATE, LC_CTYPE, LC_MESSAGES See locale(7). LINES Overrides the system-supplied number of lines if set. SHELL Used by the ! command. TERM Determines the terminal type. SEE ALSO
cat(1), more(1), sh(1), terminfo(5), locale(7), regex(7), term(7) NOTES
pg expects the terminal tabulators to set on eight positions. Files that include NUL characters cannot be displayed by pg. AVAILABILITY
The pg command is part of the util-linux package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/. Gunnar Ritter 2001-04-25 PG(1)
All times are GMT -4. The time now is 01:04 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy