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

如何仅用sed单行命令完成删除HETATM行及合并pdb文件操作

问题描述

我需要完成两项pdb文件处理操作:

  • 删除file1.pdb中所有以HETATM开头的行
  • 将fil2.pdb与处理后的file1.pdb内容合并,输出为新文件file3.pdb

目前使用的两行命令如下:

sed -i '/^HETATM/ d' file1.pdb
cat fil2.pdb file1.pdb > file3.pdb

咨询是否可以仅使用sed工具,通过单行命令实现上述全部操作?

解答

完全可以,且单行命令不会像原命令一样直接修改源文件file1.pdb,操作风险更低,对应命令如下:

sed 'FNR==NR{print;next} /^HETATM/d' fil2.pdb file1.pdb > file3.pdb

命令执行逻辑:

  • sed按传入顺序依次读取两个输入文件,先处理fil2.pdb,再处理file1.pdb
  • 规则FNR==NR{print;next}:处理第一个文件fil2.pdb时,当前文件行号FNR和全局累计行号NR数值相等,此时直接原样输出所有行内容,跳过后续规则,保证fil2.pdb完整输出在文件最前端
  • 规则/^HETATM/d:处理第二个文件file1.pdb时,FNR会重置为1重新计数,不再和全局NR相等,此时自动跳过所有以HETATM开头的行不输出,实现删除对应行的需求
  • 最终所有符合要求的内容通过重定向写入file3.pdb,输出结果和原命令执行效果完全一致,全程不会改动两个原始输入文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:39:41