如果檔案(包括 /* */)如何視覺化刪除每種類型的註解的檔案?

如果檔案(包括 /* */)如何視覺化刪除每種類型的註解的檔案?

我有這個小腳本來視覺化設定文件,而無需註釋行:

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'

相關內容