Linux / Bash: Comente todas as linhas correspondentes a um padrão

3

sed é estranho para mim, para dizer o mínimo. Eu gostaria de percorrer uma árvore de projeto C e comentar cada linha chamando a função LogMsg() . Algo que alcançaria o seguinte:

foreach: line within *.c
  if: line contains "LogMsg"
    prepend "//"

Ou então. Além disso, gostaria de ver se conseguiria o contrário, embora imagine que isso seja mais difícil.

Eu sinto que sed é a ferramenta certa para esse trabalho, mas não sou especialista em edições de arquivos de texto em lote. Alguma ajuda?

    
por musasabi 20.02.2014 / 17:07

1 resposta

7

O comando a usar é:

 sed '/LogMsg/ s?^?//?' filename  new_filename

Ele localiza as linhas, no arquivo filename , contendo LogMsg , e substitui no começo da linha ( ^ ), o barra dupla. O ponto de interrogação é usado como um delimitador em vez da barra mais comum, para evitar confusão com o texto a ser substituído. A saída é redirecionada para a nova versão do arquivo, em vez da saída padrão.

    
por 20.02.2014 / 17:19

Tags