Как я могу визуализировать файл, удалив все типы комментариев, если файл (включая /* */)?

Как я могу визуализировать файл, удалив все типы комментариев, если файл (включая /* */)?

У меня есть небольшой скрипт для визуализации файлов конфигурации без строк комментариев:

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

но он все равно показывает некоторые комментарии в некоторых файлах, когда они содержат /* */.

Как визуализировать файл, удалив все комментарии, включая /* */ ? Я думаю сделать скрипт bash с построчным поиском открытия и закрытия этих комментариев. Но я думаю, что это должен быть лучший способ сделать это.

Все варианты, которые я видел (вроде этого):http://bit.ly/1BsdcDI) не обрабатывает подобные комментарии.

Есть ли уже готовый инструмент или скрипт для этого?

Любая помощь приветствуется, спасибо.

РЕДАКТИРОВАТЬ

как уже упоминалось выше, я нацеливаюсь конкретно на файлы конфигурации. Поэтому правила исключения будут такими:

  • любая строка, начинающаяся с '#', ';' или '//'
  • любые строки от начала /* до */
  • не удаляйте строки, в начале которых нет /* (т.е. есть допустимые коды перед /*) или нет */ перед концом строки (т.е. есть допустимые коды после */)

РЕШЕНИЕ:

На основе ответа @cusco и кода @EdMorton я создал этот bash-скрипт, чтобы делать то, что мне нужно.

#!/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

решение1

проверятьhttps://stackoverflow.com/questions/13061785/remove-multi-line-comments

имеет следующий скрипт

[ $# -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'

Связанный контент