Remove lines from batch of files which match pattern

I need to remove all lines which does not match the pattern from a text file (batch of text files). I also need to keep the header line which is the first line of the file. Please can you provide an example for that.

I used this to solve half of my work. I was unable to keep the first line of the file with this. Please help. Thanks.

sed -i '/searchtext/!d' *.txt

Try this, 

$sed -i '1!{/searchtext/!d}'  *.txt 	
awk 'NR==1||!/searchtext/' urfile

Thanks very much for the help. It worked.