2010-08-25 2 views
0

Мне нужен способ чтения и удаления текста между двумя разными строками, найденными в каком-либо файле, а затем удалить две строки. Как «команда вырезания». Я хотел бы, чтобы текст хранился в переменной.Чтение и удаление текста между двумя строками в perl

Я видел сообщение о чтении текста между двумя строками, но я не мог понять, как его удалить.

Я намерен выполнить сохраненный текст в bash. Эффективность желательна. Этот сценарий не будет использоваться для больших файлов, но он может выполняться много раз подряд, поэтому чем быстрее работает сценарий, тем лучше.

Сохраненный текст обычно имеет специальные символы.

Благодаря

ответ

0

Укажите начальные и конечные строки через окружающую среду, а также файл для использования в командном Perl строке:

export START_STRING='abc def' 
export END_STRING='ghi jkl' 
perl -0777 -i -wpe's/\Q$ENV{START_STRING}\E(.*)\Q$ENV{END_STRING}\E/s;print STDERR $1' file_to_use 2>savedtext 
+0

, когда я печатаю, что в команде подсказывать не сохраняет текст в savedtext. Когда я печатаю echo $ savedtext, я получаю пустое пространство. Однако он удаляет правильный текст, но только если строка1 не является первым словом. Если строка1 является первым словом, то она удаляет все, но не сохраняет сохраненный текст. – Feynman

+0

@Feynman: $ 1 - специальный символ с сохраненным текстом – vol7ron

+0

Лучший пример: '$ text =" foostringbar "; $ text = ~ s/foo (. *?) bar // i; $ Вырезать = $ 1; print $ cut; ' – vol7ron

Смежные вопросы