我有這個小腳本來視覺化設定文件,而無需註釋行:
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'