Sed : print all lines after match Sed : print all lines after match unix unix

Sed : print all lines after match


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='


alternatively you can use awk

awk '/pattern/,EOF'

perhaps can combine with all the previous operations in awk as well.


Maybe this is what you actually want? Find lines matching "pattern" and extract the field after text= up through just before status=?

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

You are not revealing what pattern actually is -- if it's a variable, you cannot use single quotes around it.

Notice that \(.*\)status=[^/]* would match up through survstatus=new in your example. That is probably not what you want? There doesn't seem to be a status= followed by a slash anywhere -- you really should explain in more detail what you are actually trying to accomplish.

Your question title says "all line after a match" so perhaps you want everything after text=? Then that's simply

sed 's/.*text=//'

i.e. replace up through text= with nothing, and keep the rest. (I trust you can figure out how to change the surrounding script into zcat file* | sed '/pattern/s/.*text=//' ... oops, maybe my trust failed.)