파일(/* */ 포함)인 경우 모든 유형의 주석을 제거하는 파일을 시각화하려면 어떻게 해야 합니까?

파일(/* */ 포함)인 경우 모든 유형의 주석을 제거하는 파일을 시각화하려면 어떻게 해야 합니까?

주석 줄 없이 구성 파일을 시각화하는 다음 작은 스크립트가 있습니다.

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'

관련 정보