Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sed : print all lines after match

Tags:

I got my research result after using sed :

zcat file* | sed -e 's/.*text=\(.*\)status=[^/]*/\1/' | cut -f 1 - | grep "pattern" 

But it only shows the part that I cut. How can I print all lines after a match ?

I'm using zcat so I cannot use awk.

Thanks.

Edited :

This is my log file :

[01/09/2015 00:00:47]       INFO=54646486432154646 from=steve   idfrom=55516654455457       to=jone       idto=5552045646464 guid=100021623456461451463   n um=6    text=hi my number is 0 811 22 1/12   status=new      survstatus=new 

My aim is to find all users that spam my site with their telephone numbers (using grep "pattern") then print all the lines to get all the information about each spam. The problem is there may be matches in INFO or id, so I use sed to get the text first.

like image 739
hawarden_ Avatar asked Sep 14 '15 15:09

hawarden_


1 Answers

Printing all lines after a match in sed:

$ sed -ne '/pattern/,$ p'   # alternatively, if you don't want to print the match: $ sed -e '1,/pattern/ d' 

Filtering lines when pattern matches between "text=" and "status=" can be done with a simple grep, no need for sed and cut:

$ grep 'text=.*pattern.* status=' 
like image 114
JB. Avatar answered Sep 27 '22 19:09

JB.