У меня есть небольшой скрипт для визуализации файлов конфигурации без строк комментариев:
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'