Tengo este pequeño script para visualizar archivos de configuración sin las líneas de comentarios:
cat $1 | grep -Ev '[:blank]*#|^[:blank]*$' | pygmentize -g
pero todavía muestra algunos comentarios en algunos archivos cuando tienen el /* */.
¿Cómo puedo visualizar un archivo, eliminando todos los comentarios, incluido /* */? Estoy pensando en hacer un script bash con línea por línea buscando la apertura y el cierre de estos comentarios. Pero me imagino que debe ser una mejor manera de hacer esto.
Todas las opciones que he visto (como esta:http://bit.ly/1BsdcDI) no trata este tipo de comentarios.
¿Existe alguna herramienta o script ya creado para esto?
Se agradece cualquier ayuda, gracias.
EDITAR
Como se mencionó anteriormente, estoy apuntando específicamente a archivos de configuración. Entonces las reglas de exclusión serán:
- cualquier línea que comience con '#', ';' o '//'
- cualquier línea desde el inicio /* hasta el */
- no elimine ninguna línea que no tenga /* al inicio de la línea (es decir, que tenga códigos válidos antes de /*) o que no tenga */ antes del final de la línea (es decir, que tenga códigos válidos después de */)
SOLUCIÓN:
Basado en la respuesta de @cusco y el código de @EdMorton, he creado este script bash para hacer lo que quiero.
#!/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
Respuesta1
controlarhttps://stackoverflow.com/questions/13061785/remove-multi-line-comments
tiene el siguiente 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'