Bash

如何刪除 bash 腳本中的多行 (Lua) 註釋?

  • November 25, 2021

我正在編寫一個 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 時開始,"看到未轉義時結束")。您發出所有不是評論的令牌。

引用自:https://unix.stackexchange.com/questions/679013