Использование 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 в комментариях ниже и не стесняйтесь заходить в этот чат в любое время для вопросов.
Вы можете использовать простой grep для этого:
источник
-th
/-to
в-t[ho]
.grep -e
илиegrep
Использование
sed
:источник
-th
/-to
в-t[ho]
.Использование
awk
:источник
-th
/-to
в-t[ho]
.Опрашивающий сделал два замечания:
Решения в настоящее время касаются первого пункта и, следовательно, второго. Но предположим, что файл больше и выглядит так:
Разве обращение ко второму пункту ФП не поможет?
выполняет работу по удалению предположительно нежелательных строк, содержащих только пробелы, точки и тире, и оставляя все остальное, что бы это ни было.
Я думаю, что риск того или иного подхода заключается в том, что природа файла не определена должным образом.
источник
Использование Perl:
или, чтобы редактировать на месте (например
sed
,perl
также создаст временную резервную копию, так что это не так при редактировании на месте ):Это создаст копию исходного файла
filename.bak
и перезапишет исходный файл с отредактированной версией.источник