大家好,请帮我写一个脚本来执行以下操作:
- 我想打开一个名为 C60_GRM_box.gro 的文本文件(我从下面这个文件中复制了第一行),然后提取下面的第二行 127240;
GRM in vacuum 127240 1GRM C1 1 0.061 0.071 0.000 1GRM C2 2 0.184 0.142 0.000
- 然后,我想从第一步中提取的数字中减去 2800,然后将结果除以 60
我想要做什么:(在步骤号 1 - 2800 中提取的数字)/60 = 结果
- 最后我想打开另一个名为C60_GRM_box.top的txt文件(我已经复制了下面的文本文件中的所有数据我想替换它的一部分)并替换一个数字(这是G8LE这个词旁边的数字,下面是3000 ) 用我在步骤 2 中获得的结果,我已经粘贴了下面名为 C60_GRM_box.top 的第二个文件的所有内容;
; Include forcefield parameters include "/home/abdelaal/Desktop/GROMACS/C60:TAPC/C60_GRM/41/gromos54a7.ff/forcefield.itp" ; Include topology for GRM include "/home/abdelaal/Desktop/GROMACS/C60:TAPC/C60_GRM/41/GRM.itp" ifdef POSRES include "/home/abdelaal/Desktop/GROMACS/C60:TAPC/C60_GRM/41/posrestr.itp" endif ; Include topology for C60 include "/home/abdelaal/Desktop/GROMACS/C60:TAPC/C60_GRM/41/C60.itp" [ system ] ; Name GRM in vacuum [ molecules ] ; Compound #mols GRM 1 G8LE strong text 3000
如果我可以在不打开完美文件的情况下完成上述所有操作,我不需要在步骤 1 和 3 中打开文件。
非常感谢
这个 bash shell 脚本可以满足您的需求,但您可以对其进行调整以更改源/目标功能。
假设
source.txt
包含源数据;target.txt
是您要替换的那个