有沒有一種方法可以只在另一個模式出現之後將某些內容新增到第一次出現的程式碼行中?我想僅針對“Group2”關閉 addTween 行(通過在前面添加雙斜杠註釋),該行由自動生成的註釋“// Group2”劃分。換句話說,我想要
- 搜尋“// Group2”的出現
- 使用 sed 為僅適用於 Group2 的 addTween 行新增註解。
輸入檔:
// Group1
this.shape = new cjs.Shape();
this.shape.graphics.f().s("#663300").ss(1,1,1).p("EBHXAAAQAAW105QIQ06QJ9kAAQ9jAA05wJQ06wIAA21QAA2zU6wJQU5wIdjAAQdkAAU6QIQU5QJAAWzg");
this.shape.setTransform(1005.55,596.9);
this.shape_1 = new cjs.Shape();
this.shape_1.graphics.f("#E5CCFF").s().p("EgydAm9Q05wJAA20QAA2zU5wJQU6wIdjgBQdkABU5QIQU6QJAAWzQAAW006QJQ05QJ9kgBQ9jAB06wJg");
this.shape_1.setTransform(1005.55,596.9);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape_1},{t:this.shape}]}).wait(1));
// Group2
this.shape_2 = new cjs.Shape();
this.shape_2.graphics.f().s("#666600").ss(44.3,1,1).p("EhDmgf6MCHNAAAMAAAA/1MiHNAAAg");
this.shape_2.setTransform(833.25,400.65);
this.shape_3 = new cjs.Shape();
this.shape_3.graphics.f("#336699").s().p("EhDmAf7MAAAg/1MCHNAAAMAAAA/1g");
this.shape_3.setTransform(833.25,400.65);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape_3},{t:this.shape_2}]}).wait(1));
輸出檔:(注意唯一的變化是最後一行前面有一個註解雙斜線)
// Group1
this.shape = new cjs.Shape();
this.shape.graphics.f().s("#663300").ss(1,1,1).p("EBHXAAAQAAW105QIQ06QJ9kAAQ9jAA05wJQ06wIAA21QAA2zU6wJQU5wIdjAAQdkAAU6QIQU5QJAAWzg");
this.shape.setTransform(1005.55,596.9);
this.shape_1 = new cjs.Shape();
this.shape_1.graphics.f("#E5CCFF").s().p("EgydAm9Q05wJAA20QAA2zU5wJQU6wIdjgBQdkABU5QIQU6QJAAWzQAAW006QJQ05QJ9kgBQ9jAB06wJg");
this.shape_1.setTransform(1005.55,596.9);
this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape_1},{t:this.shape}]}).wait(1));
// Group2
this.shape_2 = new cjs.Shape();
this.shape_2.graphics.f().s("#666600").ss(44.3,1,1).p("EhDmgf6MCHNAAAMAAAA/1MiHNAAAg");
this.shape_2.setTransform(833.25,400.65);
this.shape_3 = new cjs.Shape();
this.shape_3.graphics.f("#336699").s().p("EhDmAf7MAAAg/1MCHNAAAMAAAA/1g");
this.shape_3.setTransform(833.25,400.65);
//this.timeline.addTween(cjs.Tween.get({}).to({state:[{t:this.shape_3},{t:this.shape_2}]}).wait(1));
答案1
sed '/\/\/ Group2/,/addTween/ s/^.*addTween/\/\/&/' file
這會搜尋 和 之間的文本// Group2
,addTween
並將其新增//
至包含 的行addTween
。