Использование sedдля изменения файла на месте:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
Это дает указание sedудалить все строки, не соответствующие шаблону. Сам шаблон ^(начало строки), сопровождается либо либо, reportлибо -tсопровождается либо hили o.
Следует отметить, что это не фактическая модификация на месте: sedсоздает временную резервную копию и перезаписывает ее исходным файлом.
Если вы хотите sedсохранить резервную копию исходного файла (что может быть хорошей идеей, если файл содержит критические данные), дайте -iкоммутатору расширение для создания файла резервной копии:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
изменит your_fileи создаст резервную копию оригинала под названием your_file.bak.
Примечание стороны
Пожалуйста, не истолковывайте мои намерения и не обижайтесь на это, но я заметил, что у вас есть много похожих вопросов, связанных с регулярным выражением / обработкой текста. Я советую вам начать обучение sed, awkи grepсамостоятельно, чтобы помочь ускорить вашу производительность. Опять же, не поймите меня неправильно, я слишком рад помочь (как и большинство людей здесь); просто я думаю, что вы получите огромную выгоду от приобретения этих инструментов для ежедневного использования.
Просто чтобы доказать, насколько полезны люди здесь, рассмотрите предложение @ slm в комментариях ниже и не стесняйтесь заходить в этот чат в любое время для вопросов.