perl - grep or sed to match a block between start and end using same pattern -
i have file following info:
start pattern1 line1 line2 ... end pattern1 line3 line4 start pattern2 ... my output should be:
start pattern1 line1 line2 end pattern1
if know pattern1 , can
sed '/start pattern1/,/end pattern1/p' <file> but here, want match pattern1 (like \s+ in perl regex) , use same (like $1) in end. how can that?
with range operator in perl, patterns aren't tested @ same time
perl -wne'print if /start ([a-za-z0-9_:]+)/ ... /end $1/' intput.txt updated actual pattern, specified in comments.
i tested using captures (in do block instead of print) , worked problems may lie in wait if there other captures. if don't capture in other regex works.
note use of ... instead of .., not test right operand until next evaluation.
Comments
Post a Comment