我正在构建最终在 awk 脚本中使用的 bash 脚本中的模式pn_ere
、beg_ere
和。end_ere
我想在 awk 脚本中构建模式,用户能够为faml
和提供值asmb
,而不是传递完整的pn_ere
、beg_ere
和end_ere
。我该如何做这个改变?
nfaml=${faml:-"[[:graph:]]+"} # Use GPH if FAML null ("" or '')
nasmb=${asmb:-"[[:graph:]]+"} # Use GPH if ASMB null ("" or '')
kw=".*"
## Pattern pn_ere matches comment characters. ## ;; !! @c //
local pn_ere="^[[:space:]]*([#;!]+|@c|//)[[:space:]]+"
beg_ere="${pn_ere}(${nfaml}) ${ebl}(${nasmb})${ebr}${spc}(${kw})$"
end_ere="${pn_ere}END OF ${nfaml} ${ebl}${nasmb}${ebr}${spc}$"
awk -f "${trk}"/densel -v pn_ere="$pn_ere" \
-v beg_ere="$beg_ere" -v end_ere="$end_ere" \
"$filename"
这是你想要做的(未经测试)吗?
您也可以通过连接设置 beg_ere 和 end_ere,例如:
sprintf()
但恕我直言,当字符串很长时,通过使用将格式与数据分开会更干净/更简单。