我想删除两个字符串之间的所有文本,除了以某些字符串开头的行.使用下面的例子,我想摆脱串之间的文本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
Run Code Online (Sandbox Code Playgroud)
有人知道我怎么能用正则表达式做到这一点?
perl -ne 'print if !(/^BEGIN/ .. /^END/) or /^BREAK/' file
Run Code Online (Sandbox Code Playgroud)
产量
keep keep keep
BREAK1 keep keep keep
BREAK2 keep keep keep
keep keep keep
Run Code Online (Sandbox Code Playgroud)
..在标量上下文是perl的触发器opeartor,并且/^BEGIN/ .. /^END/将评估为true对之间的所有行BEGIN和END包容性.
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |