Como posso visualizar um arquivo removendo todo tipo de comentário de um arquivo (incluindo /* */)?

Como posso visualizar um arquivo removendo todo tipo de comentário de um arquivo (incluindo /* */)?

Eu tenho este pequeno script para visualizar arquivos de configuração sem as linhas de comentários:

cat $1 | grep -Ev '[:blank]*#|^[:blank]*$' | pygmentize -g

mas ainda mostra alguns comentários em alguns arquivos quando eles têm o /* */.

Como posso visualizar um arquivo, removendo todos os comentários, incluindo /* */ ? Estou pensando em fazer um script bash linha por linha, buscando a abertura e o fechamento desses comentários. Mas imagino que essa deve ser a melhor maneira de fazer isso.

Todas as opções que vi (como esta:http://bit.ly/1BsdcDI) não trata esse tipo de comentários.

Existe uma ferramenta ou script já criado para isso?

Qualquer ajuda apreciada, obrigado.

EDITAR

conforme mencionado acima, estou direcionando especificamente os arquivos de configuração. Portanto as regras de exclusão serão:

  • qualquer linha começando com '#', ';' ou '//'
  • quaisquer linhas desde o início /* até */
  • não remova nenhuma linha que não tenha /* no início da linha (ou seja, tenha códigos válidos antes de /*) ou tenha */ antes do final da linha (ou seja, tenha códigos válidos depois de */)

SOLUÇÃO:

Com base na resposta de @cusco e no código de @EdMorton, criei este script bash para fazer o que quero.

#!/bin/bash
[ $# -eq 2 ] && arg="$1" || arg=""
eval file="\$$#"
sed 's/a/aA/g;s/__/aB/g;s/#/aC/g' "$file" |
          gcc -P -E $arg - |
          sed 's/aC/#/g;s/aB/__/g;s/aA/a/g' |
          grep -Ev '^[:blank]*#|^[:blank]*$' |
          grep -Ev '^[:blank]*\;|^[:blank]*$' |
          pygmentize -g

Responder1

verificarhttps://stackoverflow.com/questions/13061785/remove-multi-line-comments

tem o seguinte script

[ $# -eq 2 ] && arg="$1" || arg=""
eval file="\$$#"
sed 's/a/aA/g;s/__/aB/g;s/#/aC/g' "$file" |
          gcc -P -E $arg - |
          sed 's/aC/#/g;s/aB/__/g;s/aA/a/g'

informação relacionada