【发布时间】:2021-08-25 17:14:13
【问题描述】:
我需要替换按 ID 排序的模式范围的每一行的开头,我正在使用 sed 但欢迎使用其他语言!
这是带有目标的示例文本
...
==OPEN==
data: blabla
id: class1
moredata: blabla
==CLOSE==
==OPEN==
id: class2
boringdata: blabla
==CLOSE==
...extra info
==OPEN==
id: class8
data: ...
==CLOSE==
...more info
==OPEN==
data: ...
boringdata: ...
id: class10
==CLOSE==
...
如果我要注释掉 id 为 8 的模式,预期的输出将是:
...
==OPEN==
data: blabla
id: class1
moredata: blabla
==CLOSE==
==OPEN==
id: class2
boringdata: blabla
==CLOSE==
...extra info
// ==OPEN==
// id: class8
// data: ...
// ==CLOSE==
...more info
==OPEN==
data: ...
boringdata: ...
id: class10
==CLOSE==
...
我得到的最接近的代码是这样的,但我必须重写整个范围,而且负担不起:
sed -e '/==打开==/ {:loop; N; /==关闭==/! b 循环; /id: class8/ {s/.*/NEEDS REWRITE/}}' /example
如果我告诉它重写开头(^),它只重写范围的第一行,我认为这是因为它将整个模式视为一行。
【问题讨论】: