我想删除两个字符串之间的所有文本,除了以某些字符串开头的行.使用下面的例子,我想摆脱串之间的文本BEGIN
,并END
认为是不以开头的行BREAK1
或BREAK2
:
keep keep keep BEGIN remove remove remove remove remove remove BREAK1 keep keep keep remove remove remove BREAK2 keep keep keep remove remove remove END keep keep keep
有人知道我怎么能用正则表达式做到这一点?
perl -ne 'print if !(/^BEGIN/ .. /^END/) or /^BREAK/' file
产量
keep keep keep BREAK1 keep keep keep BREAK2 keep keep keep keep keep keep
..
在标量上下文是perl的触发器opeartor,并且/^BEGIN/ .. /^END/
将评估为true
对之间的所有行BEGIN
和END
包容性.