Regex: print matched line and exact pattern match

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Regex: print matched line and exact pattern match
# 1  
Old 07-14-2014
Regex: print matched line and exact pattern match

Hi experts,

I have a file with regexes which is used for automatic searches on several files (40+ GB).

To do some postprocessing with the grep result I need the matching line as well as the match itself.

I know that the latter could be achieved with grep's -o option. But I'm not aware of a combined option, i. e. print the match <space> print the matched line or sth like this.

Currently I'm doing this:

zgrep -E -i -f ~/some_patterns.txt <file-list> > result.txt

Based on result.txt some postprocessing takes place. Maybe the extraction of the exact match should be part of the postprocessing?

Alternatively I could switch to an awk construction as well if this would meet my needs better.

TIA & best regards

# 2  
Old 07-14-2014
With files that big performance considerations are perhaps vital, so take the following with a grain of salt. I have no file that big to test it.

Instead of using "-f <file>" to read the file automatically you could probably read the file in a shell loop and feed one regexp after the other to "zgrep", like this (just a skeleteon):

#! /bin/sh


cat /dev/null > "$fOut"
while read LINE ; do
     echo "---------- $LINE" >> "$fOut"
     zgrep -iE "$LINE" <file-list> >> "$fOut"

Depending on your regexps you may or may not have to escape some characters so that they are not interpreted by the shell.

I hope this helps.

This User Gave Thanks to bakunin For This Post:
# 3  
Old 07-14-2014
Thanks for the hint.

I think I will move that step to the postprocessing step since the result file of the main grep process will be much smaller than the original files.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to print previous line of multiple pattern matched line?

Hello, I have below format log file, Comparing csv_converted_files/2201/9747.1012H67126.5077292103609547345.csv and csv_converted_files/22019/97447.1012H67126.5077292103609547345.csv Comparing csv_converted_files/2559/9447.1012H67126.5077292103609547345.csv and... (6 Replies)
Discussion started by: arvindshukla81
6 Replies

2. UNIX for Advanced & Expert Users

sed REGEX to print multiple occurrences of a pattern from a line

I have a line that I need to parse through and extract a pattern that occurs multiple times in it. Example line: getInfoCall: info received please proceed, getInfoCall: info received please proceed, getInfoCall: info received please proceed, getInfoCall: info received please proceed,... (4 Replies)
Discussion started by: Vidhyaprakash
4 Replies

3. UNIX for Advanced & Expert Users

To print from the first line until pattern is matched

Hi I want to print the line until pattern is matched. I am using below code: sed -n '1,/pattern / p' file It is working fine for me , but its not working for exact match. sed -n '1,/^LAC$/ p' file Input: LACC FEGHRA 0 LACC FACAF 0 LACC DARA 0 LACC TALAC 0 LAC ILACTC 0... (8 Replies)
Discussion started by: Abhisrajput
8 Replies

4. Shell Programming and Scripting

Match Pattern and print pattern and multiple lines into one line

Hello Experts , require help . See below output: File inputs ------------------------------------------ Server Host = mike id rl images allocated last updated density vimages expiration last read <------- STATUS ------->... (4 Replies)
Discussion started by: tigerhills
4 Replies

5. Shell Programming and Scripting

Print line between two patterns when a certain pattern matched

Hello Friends, I need to print lines in between two string when a keyword existed in those lines (keywords like exception, error, failed, not started etc). for example, input: .. Begin Edr ab12 ac13 ad14 bc23 exception occured bd24 cd34 dd44 ee55 ff66 End Edr (2 Replies)
Discussion started by: EAGL€
2 Replies

6. Shell Programming and Scripting

Print only next pattern in a line after a pattern match

I have 2013-06-11 23:55:14 1Umexd-0004cm-IG <= I need sed/awk operation on this, so that it should print the very next pattern only after the the pattern mach <= ie only print (7 Replies)
Discussion started by: anil510
7 Replies

7. Shell Programming and Scripting

print lines with exact pattern match

I have in a file 1909 IN A 1909 IN A 1699 IN A 1806 IN A I need to "grep" or "awk" out the lines starting with as follows. 1909 IN A (3 Replies)
Discussion started by: anilcliff
3 Replies

8. Shell Programming and Scripting

grep regex, match exact string which includes "/" anywhere on line.

I have a file that contains the 2 following lines (from /proc/mounts) /dev/sdc1 /mnt/backup2 xfs rw,relatime,attr2,noquota 0 0 /dev/sdb1 /mnt/backup xfs rw,relatime,attr2,noquota 0 0 I need to match the string in the second column exactly so that only one result is returned, e.g. > grep... (2 Replies)
Discussion started by: jelloir
2 Replies

9. Shell Programming and Scripting

match a pattern and print the line once

Hi, I have a xml file <cisco:name> <cisco:mdNm>Cisco Device 7500 A Series</cisco:mdNm> <cisco:meNm></cisco:meNm> <cisco:ehNm>/shelf=1</cisco:ehNm> <cisco:subname> <cisco:meNm></cisco:meNm> <cisco:sptp>Cisco PortA Series</cisco:sptp> ... (11 Replies)
Discussion started by: bhagirathi
11 Replies

10. Shell Programming and Scripting

SED: delete and print the only exact matched pattern

I am really need help with the regular expression in SED. From input file, I need to extract lines that have the port number (sport or dport) as defined. The input file is something like this time=1209515280-1209515340 dst= src= bytes=2472 proto=6 sport=80 dport=1447... (6 Replies)
Discussion started by: new_buddy
6 Replies
Login or Register to Ask a Question

Featured Tech Videos