我正在解析一個PHP文件並在HTML中包裝函數原型元素。如果有&符號,它會破壞我的代碼。Sed和Awk Escaping&符號(&)
輸入:function foo (&$var1, &$var2){...}
//爲字符串
所需的輸出(在HTML):&$var1, &$var2
//基本上,只輸出變量,使他們正確地顯示在瀏覽器
眼下,我發送每個變量到awk的子方法,然後sed。
sub(/^&/, "\\\&", param) #param is the variable of interest (e.g. &$var1)
#Intermediate step in case it's relevant. The awk-processed elements
#are sent to ${file}_param.txt. Each set of parameters are delimited by colons.
param=$(cut -d: -f$counter ${file}_param.txt)
#Replace some default text in template file with real stuff.
sed -i "s|@PARAM|$param|1" "$base"_funct_def.txt
輸出我得到:的&符號被解釋。整場比賽被取代。
問題的隔離:按照我的意思,在瀏覽器中顯示'g $ var1'。但是,我試圖獲得'&'。
sub(/^&/, "g", param)
我嘗試:我用三個反斜槓,因爲我認爲AWK會先處理成「\ &」其中,送入sed的,將其解釋「\ &」爲文本「&」。儘管我嘗試了從1到6個反斜槓,但無濟於事。
問題:如何逃生&?
手冊:http://www.staff.science.uu.nl/~oostr102/docs/nawk/nawk_92.html
一些 「元」/設計什麼我想要做的(不需要的問題!!)
我有一大堆的問題PHP文件,我想生成一些文檔(像Javadocs結構)。我正在使用REGEX和shell腳本來解析它,以便列出函數名稱,參數和返回項目。到目前爲止,我認爲REGEX工作得很好,但我已經閱讀了很多有關REGEX不應該用於的東西。我歡迎任何有關這方面的評論(文檔通常如何生成?)。多謝你們!
這是什麼'$ param'其實包含?如果這些命令沒有按順序運行(例如,如果實際上有其他代碼),則不應將它們放在同一代碼塊中,這會造成誤導。 – doubleDown
對錯誤部分抱歉。我將來會記住這一點。 $ param包含一個參數元素。例如,如果有一個函數: 'function foo(&$ arg1,$ arg2)' $ param應該是''&$ arg1'' 雖然好消息:我找到了一個修復程序。在執行sed之前,我確保轉義任何'&'。我在第一個參數賦值之後添加了以下內容: 'param = $(echo $ param | sed's | ^&| \\&| g')' 這與將事情包裝在awk部分代碼。 – bobbyjoe93