Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Как удалить текст между заданным текстом?

#linux #ubuntu #bash


Подскажите, как решить проблему на bash командой sed

есть файлик с содержанием:

бла бла бла
...
/*033cf*/

@include "\x2fhom\x65/mg\x6etep\x6co/m\x67nte\x70lo.\x72u/d\x6fcs/\x6dodu\x6ces/\x6dod_\x65xt_\x6denu\x6dati\x63/js\x2ffav\x69con\x5fd38\x3368.\x69co";

/*033cf*/
...
бла бла бла


Задача удалить все, начинающееся с @include "\x2 и заканчивающиеся ;
    


Ответы

Ответ 1



Если не принципиально использование sed, предлагаю вариант с grep: grep -v '^@include\ "\\x2.*;$' filename grep покажет файл filename, а -v удалит строки, начинающиеся с @include "\x2 и заканчивающиеся ;

Ответ 2



удалить все строки, содержащие фрагмент1, а затем фрагмент2: $ sed -i '/фрагмент1.*фрагмент2/d' файл удалить все строки, начинающиеся с фрагмент1 и заканчивающиеся на фрагмент2 (^ — привязка к началу строки, $ — к концу): $ sed -i '/^фрагмент1.*фрагмент2$/d' файл удалить только части строк, начиная с фрагмент1 и заканчивающиеся на фрагмент2: $ sed -i 's/фрагмент1.*фрагмент2//' файл если внутри фрагментов встречаются символы / или \, перед ними надо добавить символ \.

Комментариев нет:

Отправить комментарий