Використання 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 в коментарях нижче та сміливо заходьте в цю чат будь-коли із запитаннями.