ファイルのすべての種類のコメント(/* */ を含む)を削除してファイルを視覚化するにはどうすればよいですか?

ファイルのすべての種類のコメント(/* */ を含む)を削除してファイルを視覚化するにはどうすればよいですか?

コメント行なしで設定ファイルを視覚化するためのこの小さなスクリプトがあります:

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

ただし、一部のファイルに /* */ が含まれている場合は、コメントがまだ表示されます。

/* */ を含むすべてのコメントを削除して、ファイルを視覚化するにはどうすればよいでしょうか。これらのコメントの開始と終了を 1 行ずつ検索する 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'

関連情報