Bash
如何刪除 bash 腳本中的多行 (Lua) 註釋?
我正在編寫一個 bash 腳本,我需要從 Lua 文件中刪除註釋,這些文件的格式如下:
--like this foo="bar" --or like this --[[ or like this ]] --[[ or like this ]]
我知道我可以用它
sed 's/--.*$//' ${my_file}
來刪除單行註釋,但我怎樣才能解決多行註釋呢?謝謝!
假設所有多行匹配都以 開頭
--[[
和結尾]]
,您可以使用範圍匹配來處理多行匹配和單行匹配。$ sed '/^--\[\[/,/\]\]/d' input_file --like this foo=bar --or like this
實現您的原始程式碼現在可以清除與上一個命令不匹配的剩餘註釋。
$ sed '/^--\[\[/,/\]\]/d;s/--.*$//' input_file foo=bar
要清理,也可以刪除空行。
$ sed '/^--\[\[/,/\]\]/d;s/--.*//;/^$/d' input_file foo=bar
不,不是正則表達式引擎的真正工作。例如,您可以擁有
--
或]]
完全合法地使用字元串。字元串以 結尾"
,但不以結尾\"
。程式語言的概念並不容易(在某些情況下,根本不是,但這成為語法理論中的一個練習)映射到正則表達式。
我自己不是語言理論家,但我認為 lua 可能沒有定義正常語法,因此可能不是正則表達式可解析的。
實現這一點的方法是建構一個詞法分析器,它逐個字元地讀取文件,並將它們分成標記(例如,這是一個字元串標記,當你看到 a 時開始,
"
看到未轉義時結束"
)。您發出所有不是評論的令牌。