Remove texto de múltiplas linhas com caracteres especiais de todos os arquivos em uma pasta

1

Tenho texto de várias linhas com caracteres especiais ( i.e. //*(): etc ) parecidos com os seguintes em vários arquivos em uma pasta que estou tentando remover. Tentei todas as diferentes soluções usando sed e awk , mas nenhuma delas parece gostar de // .

// Some text with (something else) and a clack 6*5. 
// Rest on the next line with some more  
// etc. http://website.com/helloworld.php 
// and just another line.

Tudo que eu preciso é pesquisar e me livrar desse texto de todos os arquivos na pasta data .

    
por Yas T. 25.04.2014 / 20:23

3 respostas

2

Existem várias maneiras de lidar com a sequência // usando sed

  1. barra invertida - escape cada / instância

    sed '/^\/\//d' file
    
  2. coloque o / dentro de uma lista de caracteres [...]

    sed  '/^[/]\{2\}/d' file
    

    ou (com o GNU sed)

    sed -r /^[/]{2}/d' file
    
  3. altere o delimitador regex para algum outro caractere, para que a sequência // seja tratada literalmente

     sed '\%^//%d' file
    
por 26.04.2014 / 03:00
1

Aqui estão 3 métodos.

  1. Usando o gcc

    Usando gcc , você pode utilizá-lo como um pré-processador para remover os comentários de um arquivo C / C ++.

    Exemplo

    $ cat test.c 
    #define foo bar
    foo foo foo
    #ifdef foo
    #undef foo
    #define foo baz
    #endif
    foo foo
    
    // Some text with (something else) and a clack 6*5. 
    // Rest on the next line with some more  
    // etc. http://website.com/helloworld.php 
    // and just another line.
    

    Para remover os comentários:

    $ gcc -fpreprocessed -dD -E test.c
    # 1 "test.c"
    #define foo bar
    foo foo foo
    #ifdef foo
    #undef foo
    #define foo baz
    #endif
    foo foo
    

    Isso pode ser adaptado usando find . -iname "*.c" para encontrar todos os seus arquivos .c e executar os itens acima neles, seria uma abordagem.

  2. Usando stripcmt

    Existe uma ferramenta chamada stripcmt (ou seja, tira comentários) que você pode usar para fazer o que quiser.

  3. Usando o Perl

    Você também pode usar esse módulo Perl CPAN para remover comentários, com um script personalizado. O módulo CPAN é chamado: Regexp :: Common :: comment . Há exemplos de como fazer isso na página do CPAN.

por 26.04.2014 / 02:38
1

Você também pode usar apenas grep :

grep -v // file

O -v imprime linhas que não correspondem ao padrão fornecido.

Ou perl :

perl -ne 'print unless m#^//#;' file 

ou

perl -ne 'next if m#^//#; print' file 
    
por 26.04.2014 / 03:48

Tags