如何用awk/bash解析MELTING多行结果文本并处理缺失熔温字段
基于awk的MELTING结果解析方案
实现思路
逐行扫描文件,以The MELTING results are作为每个条目块的分隔标记,每次遇到新块时先输出上一个块的解析结果,再重置三个字段的默认值为NA,后续匹配到对应字段行时再更新值,确保缺失字段自动填充NA,避免条目错位。
完整awk脚本
BEGIN { OFS = "\t" # 如需自定义输出分隔符,可修改上一行的\t为其他符号,比如逗号改为"," print "Enthalpy", "Entropy", "Melting_temperature" } # 匹配新条目块起始 /The MELTING results are/ { if (block_num > 0) { print enthalpy_val, entropy_val, tm_val } # 重置字段默认值为NA enthalpy_val = "NA" entropy_val = "NA" tm_val = "NA" block_num++ next } # 匹配焓值行 $1 == "Enthalpy" { sub(/^Enthalpy : /, "") enthalpy_val = $0 next } # 匹配熵值行 $1 == "Entropy" { sub(/^Entropy : /, "") entropy_val = $0 next } # 匹配熔解温度行 $1 == "Melting" && $2 == "temperature" { sub(/^Melting temperature : /, "") tm_val = $0 next } END { # 输出最后一个块的内容 if (block_num > 0) { print enthalpy_val, entropy_val, tm_val } }
使用方法
- 将上述脚本保存为
parse_melting.awk - 运行命令解析文件:
awk -f parse_melting.awk 你的输入文件路径 > 输出文件路径.tsv
输出说明
- 每行对应一个MELTING条目,三个字段按顺序排列,缺失字段自动填充为NA
- 默认输出为制表符分隔的tsv格式,可直接导入Excel或其他数据分析工具处理
- 字段保留原文所有单位信息,如需仅保留特定单位可修改对应行的sub规则截取数值部分
内容的提问来源于stack exchange,提问作者Aryan Neupane
相关产品推荐
相关产品推荐

