遇到的问题:
gmx distance会生成原子间距离随时间变化的xvg文件,还会在终端生成平均距离。之前统计突变体动力学模拟原子间距离不可用,现在需要重新统计特定原子间距离,因此记录一下:
#!/bin/bash
gmx distance -f traj.xtc -s md.tpr -select "resid 285 and name HH21 plus resid 363 and name O8" -oall 285Arg-HH21_UNK-O8.xvg > cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 285 and name HE plus resid 363 and name O7" -oall 285Arg-HE_UNK-O7.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 238 and name HH plus resid 363 and name O8" -oall 238Tyr-HH_UNK-O8.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 223 and name HH plus resid 363 and name O8" -oall 223Tyr-HH_UNK-O8.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 335 and name OG plus resid 363 and name H19" -oall 335Ser-OG_UNK-H19.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 335 and name O plus resid 363 and name H20" -oall 335Ser-O_UNK-H20.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 54 and name H plus resid 363 and name O10" -oall 54Thr-H_UNK-O10.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 362 and name N5 plus resid 363 and name C5" -oall FAD-N5_UNK-C5.xvg >> cmd
gmx distance -f traj.xtc -s md.tpr -select "resid 362 and name N5 plus resid 363 and name H17" -oall FAD-N5_UNK-H17.xvg >> cmd
grep "resid" cmd |awk '{ORS=" "; print$2 $5"_" $8 $11}' > resid #提取cmd文件中含有“resid”行,awk提取第2列、第5列、第8列和第11列,中间以“_” 隔开
grep "Average" cmd | awk '{ORS=" "; print$3}' > Average
sed -i "s/://g" resid #把resid中的冒号替换成空格
sed -i "1r Average" resid #把Average中的内容插入到resid中第二行
awk 'BEGIN{ FS=" ";OFS=","}{print $1,$2,$3,$4,$5,$6,$7,$8}' resid > resid.csv #把空格换成逗号
最终生成的resid.csv是:
生成的csv文件导入windows中可用xlsx直接打开,参考了这篇博文:Linux的文件如何导出成Windows里的Excel
欢迎大家多提意见,现在这个可以满足我的需求,大家也许有更简练的写法,都可留言哦!