2012-10-05 5 views
2

Я хочу извлечь строки между одной заданной и еще одной или менее случайной строкой. файл выглядит следующим образом:Извлечь строки между двумя аналогичными строками

\\\\\ 
\\\\\  start 
\\\\\ 
lines 
to 
extract 
\\\\\ 
\\\\\  <any string> (must not be start but could be sta*) 
\\\\\ 

До сих пор я не был в состоянии получить линии между этими двумя без явного зная вторую строку. Определяя вторую так же, как любые возможные символы, использующие \ w или [a-zA-Z] perl, кажется, соответствуют первой строке два раза и поэтому выводятся только «----- start».

До сих пор выглядит следующим образом:

open(FILE,'<','file.txt') or die "Could not open: $!"; 
while(<FILE>){ 
    print $_ if (/^\\{5}  start$/ .. /^\\{5}  [a-zA-Z]/); 
} 

и выход:

\\\\\  start 

Надеясь на некоторые идеи.

ответ

2

Используйте ... вместо .., чтобы избежать совпадения обоих выражений.

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