Usando sed para modificar o arquivo:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
Isso instrui sed a excluir todas as linhas que não correspondam ao padrão. O próprio padrão é ^ (início da linha), seguido por report ou -t seguido por h ou o .
Você deve observar que isso não é uma modificação real no local: sed cria uma cópia de backup temporária e sobrescreve o arquivo original com ela.
Se você quiser que sed mantenha uma cópia de backup do arquivo original (o que pode ser uma boa ideia se o arquivo contiver dados críticos), forneça a extensão -i para criar um arquivo de backup:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
modificará your_file e criará um backup do original chamado your_file.bak .
Uma nota lateral
Por favor, não interprete mal minhas intenções ou se ofenda com isso, mas notei que você tem muitas questões relacionadas a processamento de texto / regex similares. Eu aconselho você a começar a aprender sed , awk e grep por conta própria para ajudar a acelerar sua produtividade. Mais uma vez, não me interpretem mal, estou muito feliz em ajudar (como a maioria das pessoas por aqui); é só que eu acho que você se beneficiará enormemente de pegar essas ferramentas para o seu uso diário.
Apenas para provar o quão útil as pessoas estão por aqui, considere a sugestão do @ slm nos comentários abaixo e sinta-se à vontade para baixar esta sala de chat a qualquer momento para perguntas.