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

Bash解析SDF文件时无法忽略空格,Ki(nM)字段无法输出求助

解决SDF文件解析中Ki(nM)字段无法正常输出的问题

问题分析

你的awk代码存在两个核心问题:

  • 标签提取不完整:原代码用$2获取SDF的标签,但像<Ki (nM)>这类包含空格的标签,会被awk默认的空白分隔符拆分成多个字段,导致只取到<Ki,无法匹配后续调用的<Ki (nM)>键。
  • 值的前后空白处理:虽然awk默认会忽略值的前导空白,但统一处理前后空白能避免其他异常情况。

修正后的awk代码

awk -v OFS='\t' '
    /^>/ {
        # 提取完整标签:去掉开头的"> ",保留从<到>的完整内容
        sub(/^> /, "", $0)
        tag = $0
        next
    }
    NF {
        # 去除值的前后空白后存入数组
        val = $0
        gsub(/^[[:space:]]+|[[:space:]]+$/, "", val)
        f[tag] = val
    }
    $0 == "$$$$" {
        print f["<pH>"], f["<PMID>"], f["<Ki (nM)>"]
    }
' P46098.sdf

代码说明

  • 标签提取:用sub(/^> /, "", $0)去掉行首的> ,直接将整行剩余内容作为完整标签,避免空格分割导致的标签截断。
  • 值处理:用gsub去除值的前后空白,确保像 0.0316这类带前导空格的内容能被正确存储为0.0316。
  • 触发输出:当遇到SDF文件的分隔符$$$$时,输出目标字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:45:42