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