Apagar 10 primeiros caracteres de cada linha no arquivo de texto

1

Suponha que eu tenha um arquivo, test.java

Começa assim todas as linhas

/*     */ package com.a;
/*     */ import java.util.List

/*     */ etc

Eu quero remover os 10 primeiros caracteres de cada linha e substituir por espaço vazio , então, depois de executar o comando, o arquivo deve ficar assim:

package com.a;
import java.util.List

etc

NÃO ESTE :

          package com.a;
          import java.util.List

          etc

Obrigado

Estou procurando o comando correto e o comando deve abranger todos os arquivos .java em todos os subdiretórios abaixo.

    
por K Split X 19.10.2017 / 01:46

2 respostas

3

Se você tiver certeza sobre os primeiros 10 caracteres - use a seguinte solução find + sed :

find . -type f -name "*.java" -exec sed -i 's/.\{10\}//' {} \;
  • find . -type f -name "*.java" - para localizar todos os arquivos *.java de forma recursiva

  • sed -i 's/.\{10\}//' - remove os primeiros 10 caracteres de cada linha em cada arquivo encontrado (a opção -i permite modificar o arquivo no local )

  • esta solução funcionará com o GNU sed . Com BSD sed você precisa de -i '' , pois -i requer um argumento lá. Com outras versões de sed , você não tem -i e precisa salvar a saída em um arquivo diferente e mv desse arquivo no nome original depois.

por 19.10.2017 / 01:53
0

Tente isto:

sed -i -r 's/.{10}//' *.java
    
por 19.10.2017 / 01:49