Como posso substituir os colchetes abertos do fim de linha para a nova linha usando sed?

0

Eu tenho muitos arquivos com colchetes errados abertos no final da linha e preciso substituí-los por uma nova linha por conditon [a-z)] [{]|[a-z)][{].

exemplo de entrada:

public class Test {

}

resultado esperado:

public class Test 
{

}

O que está errado na minha solução?

sed -e '/[a-z)] [{]|[a-z)][{]/s/{/N{/g' *.java -r 
    
por Artyom 30.11.2016 / 13:30

2 respostas

1

Como você está fazendo isso em um Mac, esse sed fará isso: sed 's/{$/\'$'\n{/'

Exemplo:

echo "public class Test {

}" | sed 's/{$/\'$'\n{/'
public class Test 
{

}

Se você quiser editar o arquivo "no lugar", execute este comando:

sed -i "" 's/{$/\'$'\n{/' java

Resultado:

cat java 
public class Test 
{

}

Aqui é uma referência sobre a inserção de novas linhas em sed no Mac.

Testado no OS X 10.11.6

    
por 30.11.2016 / 14:34
1

Você pode simplesmente usar este comando

sed -e s/{/\n{/g *.java

ele substituirá { por \n{ e mostrará a saída na tela. Para substituir o texto nos arquivos, você pode usar a opção no local

sed -i s/{/\n{/g *.java
    
por 30.11.2016 / 14:09