¿Hay alguna manera de anteponer algo a la primera aparición de una línea de código SÓLO después de que aparezca otro patrón? Quiero desactivar la línea addTween (anteponiendo un comentario de doble barra) SÓLO para "Grupo2", que está delimitado por un comentario generado automáticamente "// Grupo2". En otras palabras, quiero
- buscar la aparición de "// Grupo2"
- use sed para anteponer un comentario para la línea addTween solo para el Grupo2.
Fichero de entrada:
// 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));
Archivo de salida: (tenga en cuenta que el único cambio es que la última línea tiene un comentario con doble barra antepuesta)
// 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));
Respuesta1
sed '/\/\/ Group2/,/addTween/ s/^.*addTween/\/\/&/' file
Esto busca el texto entre // Group2
y lo siguiente addTween
y lo agrega //
a la línea que contiene addTween
.