You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并打印指定区块与提取存储特定字符串的技术方案问询

任务需求与代码优化

核心任务

需要合并以下两项任务:

  1. 按照指定区块结构筛选并打印目标区块,区块结构示例如下:
## NFAML [NASMB] KEYWORDS
## BODY (can include empty lines)
## END OF NFAML [NASMB]

其中KEYWORDS为由逗号分隔的关键词(例如bash,resource)。
2. 在打印区块的同时,提取区块头中的NFAML、NASMB、KEYWORDS三部分内容,并将KEYWORDS按逗号拆分后存入数组。

现有Bash代码片段

spc='[[:space:]]*'
ebl='\\['  # awk needs it for applying \[
ebr='\\]'  # awk needs it for applying \]
pn_ere='^[[:space:]]*([#;!]+|@c|//)[[:space:]]+'

nfaml=${faml:-"[[:graph:]]+"}  # Use GPH if FAML null ("" or '')
nasmb=${asmb:-"[[:graph:]]+"}  # Use GPH if ASMB null ("" or '')

cmt='//' ; ebl='\[' ; ebr='\]'  # for sed to apply // ] [
spc='[[:space:]]*' ; gph="[[:graph:]]+"

local kys=".*"
local pn_ere="^[[:space:]]*([#;!]+|@c|${cmt})[[:space:]]+"
beg_ere="${pn_ere}(${nfaml}) ${ebl}(${nasmb})${ebr}${spc}(${kys})$"
end_ere="${pn_ere}END OF ${nfaml} ${ebl}(${nasmb})${ebr}${spc}$"

while read line; do
  if [[ $line =~ $beg_ere ]]; then
    title=${BASH_REMATCH[1]}
    subtitle=${BASH_REMATCH[2]}
    keywords=${BASH_REMATCH[3]}
    echo "Title: $title"
    echo "Subtitle: $subtitle"
    echo "Keywords: $keywords"
  fi
done < $filename

awk -v pnre="$pn_ere" -v begrsc="$beg_ere" -v endrsc="$end_ere" \
    '$0 ~ beg_ere { insc=1; next }
     $0 ~ end_ere { insc=0; print "" }
     insc { sub(pn_ere,""); print }' "$filename"

初步Awk实现思路(待完善)

awk -v beg_ere="$beg_ere" -v pn_ere="$pn_ere" -v end_ere="$end_ere" '
  $0 ~ beg_ere { 
    title=gensub(beg_ere, "\\1", "g", $0);
    subtitle=gensub(beg_ere, "\\2", "g", $0);
    keywords=gensub(beg_ere, "\\3", "g", $0);
    split(keywords, kaggr, ",");
    print "Title: " title;
    print "Subtitle: " subtitle;
    print "Keywords: " keywords;
    print "kaggr: " kaggr;
    next
  }
  $0 ~ pn_ere { 
    $0=gensub(pn_ere, "", "g", $0);
    print $0
  }
  $0 ~ end_ere { 
    print ""
  }
' "$filename"

内容的提问来源于stack exchange,提问作者Dilna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:51:18