Para um arquivo como este:
$ cat file1
@MyClass1.MyClass2(value = {
Class1.class,
Class2.class,
Class3.class,
Class4.class
})
public class Foo {}
@MyClass11.MyClass2(value = {
Class1.class,
Class2.class,
Class3.class,
Class4.class
})
public class Foo2 {}
Você pode ter este resultado:
$ sed '/@MyClass1.MyClass2(*/,/})/{s|\sClass.*|//&|g; /Class2/{s|//||}}' file1
@MyClass1.MyClass2(value = {
// Class1.class,
Class2.class,
// Class3.class,
// Class4.class
})
public class Foo {}
@MyClass11.MyClass2(value = {
Class1.class,
Class2.class,
Class3.class,
Class4.class
})
public class Foo2 {}
Explicação:
'/@MyClass1.MyClass2(*/,/})/ {....}
- > intervalo para operar no formulário /from/,/to/{actions}
{s|\sClass.*|//&|g;
- > aplique //
em todas as linhas, começando com whitespace \s
e, em seguida, Class
/Class2/{s|//||}
- > remova //
para Class2
Dica: No sed nós podemos usar qualquer caractere como um separador para s/replacethis/withthat/
synthax.
Eu escolho |
para evitar o escape de //