如何使用Python或Bash在文件[ moleculetype ]行前插入指定内容
实现方案
Bash 方法
使用sed流处理工具可以快速完成插入操作:
- Linux(GNU sed)环境命令:
sed -i '/\[ moleculetype \]/i #ifdef POSRES\n#include "posres.itp"\n#endif' 目标文件名
参数说明:
-i表示直接修改原文件,如果需要备份可以写成-i.bak,会自动生成后缀为.bak的原文件备份- 正则匹配部分的中括号需要加反斜杠转义,避免被识别为正则字符集语法
i表示在匹配到的行之前插入内容,\n用来实现换行- macOS(BSD sed)环境命令:
BSD sed的插入语法略有区别,需要在插入内容每一行末尾加反斜杠,且-i参数需要显式指定空备份后缀:
sed -i '' '/\[ moleculetype \]/i \ #ifdef POSRES\ #include "posres.itp"\ #endif' 目标文件名
Python 方法
以下代码可以跨平台实现需求,小文件直接读取所有行处理效率更高:
insert_content = [ "#ifdef POSRES\n", "#include \"posres.itp\"\n", "#endif\n\n" ] file_path = "你的目标文件路径" # 读取文件所有内容 with open(file_path, 'r', encoding='utf-8') as f: lines = f.readlines() # 查找 [ moleculetype ] 行的位置 for idx, line in enumerate(lines): if line.strip() == "[ moleculetype ]": # 在匹配行前插入内容 lines[idx:idx] = insert_content break # 写回原文件 with open(file_path, 'w', encoding='utf-8') as f: f.writelines(lines)
如果需要备份原文件,可以在写回之前先将原文件重命名保存即可。
内容的提问来源于stack exchange,提问作者Natu
相关产品推荐
相关产品推荐

