recuperando cabeçalhos / blocos de comentários

1

Eu tenho vários arquivos de log que se parecem com isso:

/*
header
arbitrary number of lines
*/
blah blah
blah blah

Usando comandos Bash simples (de preferência sed, não awk), como eu recuperaria apenas as linhas de cabeçalho (idealmente incluindo os marcadores de comentário)?

Eu tenho RTFM e tentei googling, também achei algumas dicas , mas não o suficiente para começar.

Obrigado!

    
por AnC 06.09.2009 / 17:24

4 respostas

2

Se você confirmar as seguintes informações, o script desta resposta funcionará para você.

  1. Os arquivos começam com os caracteres " /* "
    • Pode haver um bloco de comentários multi-linha C-Syntex que não está aninhado
    • O bloco de comentários termina sem instruções adicionais na mesma linha
sed -n '/^\/\*/,/\*\// p' file.c
#        - - -    - - 

Isso corresponderá a todas as linhas desde o início do arquivo até o final do bloco de comentários.
A segunda linha (com um " # " no início) destaca a correspondência que está sendo pesquisada.
O " -n " no início e " p " no final dizem ao sed para imprimir apenas a parte correspondente.

    
por 06.09.2009 / 18:23
1

Esta olhada em todo arquivo com uma extensão .log e se a primeira linha for "/ *" somente, imprima tudo até uma linha com "* /" somente.

for file in *.log; do
      head -n1 $file | grep  -q '^/*' &&
      sed '/^\*\/$/q' $file; 
done
    
por 06.09.2009 / 18:08
0
cat *.log | sed -e 's/*\/\*//g' -e 's/\*\///g' >> smt.log

Pode ser isso

    
por 06.09.2009 / 17:42
0

No caso, se você gostou de mim ao tropeçar nesta questão ao tentar recuperar comentários no estilo Doxygen, o comando sed é:

sed -n '/^\/\*/p; /^ \*/p' < file

Para uma explicação mais detalhada, eu blogou sobre isso.

    
por 19.04.2010 / 15:43