/ / Shell script para localizar e excluir um padrão de texto dos arquivos .java - shell

Script de shell para localizar e excluir um padrão de texto dos arquivos .java - shell

Alguém pode me ajudar com um script de shell que pode fazer o seguinte?

Eu quero excluir o bloco catch de arquivos java. Eu preciso de um script de shell que pode pesquisar o bloco catch e excluí-lo.

Eu tenho centenas de arquivos java que possuem o seguinte bloco catch, e eles precisam ser excluídos pelo shell script:

} catch (SomeException e) {
if (Loging.isOn()) {
System.out.println("Exception");
// and also some code which differs from file to file.
}

Respostas:

1 para resposta № 1

Eu estou no Windows e não tenho nenhuma máquina Linux à mão. Eu suponho que você está em um sistema Linux. O que você precisa é este comando sed, disponível no BASH no Linux. Eu não consegui verificar este código, mas ele deve funcionar como está escrito, talvez com um ajuste. Isso pressupõe que os blocos que você deseja excluir começam com "} catch" e terminam com um "}", sem outras chaves corretas dentro desse bloco. Claro, você precisa estar no diretório correto quando você executar este código, então use o comando CD para chegar lá. Se o "in ..." for excluído, o loop será executado como se "in $ @" fosse fornecido.

for i in /directory/*.java
do
# echo "Working on $i file"
copy $i tempfil.txt
sed   -e "/} catch/,/^}/d" tempfil.txt > $i
done