使用Bash关联数组映射pdb文件名特征片段至对应颜色的技术问询
需求实现:提取PDB文件标识并关联颜色的Bash脚本
需求概述
需要处理的PDB文件列表:
MD_6nax_DPPC_120A.pdb MD_6nax_DOPC_120A.pdb MD_6nax_POPC_120A.pdb MD_6nax_DOPE_120A.pdb MD_6nax_POPE_120A.pdb
核心目标:
- 提取每个文件名中第二个下划线后的片段(如
DPPC、DOPE)作为唯一标识ID - 为这些ID绑定自定义颜色,通过脚本输出对应关联关系
完整Bash脚本实现
#!/bin/bash # 定义标识ID与颜色的映射关系,可按需修改颜色值 declare -A color_map=( ["DPPC"]="#FF5733" ["DOPC"]="#33FF57" ["POPC"]="#3357FF" ["DOPE"]="#FF33A6" ["POPE"]="#FFC300" ) # 遍历目标PDB文件 for pdb_file in MD_6nax_*.pdb; do # 跳过不存在的文件(避免通配符无匹配时遍历字符串本身) [[ -f "$pdb_file" ]] || continue # 提取第二个下划线后的标识ID:按下划线分割取第3段,自动过滤后缀 id=$(echo "$pdb_file" | cut -d'_' -f3) # 获取对应颜色,无匹配时用默认灰色 color=${color_map[$id]:-"#808080"} # 输出结果,格式可自定义 echo "文件: $pdb_file | 标识ID: $id | 关联颜色: $color" done
脚本说明
- 颜色映射配置:
color_map是Bash关联数组,直接修改键值对就能调整标识ID对应的颜色,支持十六进制颜色码或系统内置颜色名称。 - 文件遍历逻辑:用
MD_6nax_*.pdb通配符精准匹配目标文件,加入[[ -f "$pdb_file" ]]判断,防止通配符无匹配时出现无效遍历。 - 标识提取:通过
cut -d'_' -f3按下划线分割文件名,直接取第3段就能得到目标标识(比如MD_6nax_DPPC_120A.pdb分割后第3段就是DPPC),逻辑简洁高效。 - 容错处理:如果某个标识ID不在映射数组中,脚本会自动使用默认灰色
#808080,可根据需求修改默认值。
内容的提问来源于stack exchange,提问作者James Starlight
相关产品推荐
相关产品推荐

