24小时热门版块排行榜    

CyRhmU.jpeg
查看: 615  |  回复: 2

BBQY

铁虫 (小有名气)

[求助] shell脚本编程已有1人参与

我有个QB.out文件,文件中有                        
  CARTESIAN COORDINATES     
1    H       16.074719860     8.229529334    25.103862190   
2    C       16.465993520     9.232996370    25.301990040   
3    C       17.415993140     9.685996190    24.205990470   
4    N       16.735993410     9.949996080    22.943990970   
5    C       17.340993170    10.058996040    21.764991430   
6    N       16.616993460    10.307995940    20.682991860   
7    N       18.659992650     9.916996100    21.652991480   
8    H       15.602017307     9.906518523    25.370615233   
9    H       16.966838633     9.240617684    26.275695958   
10    H       17.924047738    10.622953044    24.553804455 ,其中文件中有2个CARTESIAN COORDINATES,如果我想提取 第二个CARTESIAN COORDINATES这个关键词下面的第3-9行坐标,并保留小数点后4位有效数字到QB.coods文件用shell怎样写脚本呀,shell新手,还望大家多多帮忙呀,不胜感激~
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baichi121234

禁虫 (职业作家)

本帖内容被屏蔽

2楼2016-06-07 23:15:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

czyzsu

专家顾问 (文坛精英)


【答案】应助回帖

#!/bin/bash
for i in *.out
do
NAME=${i%.out}
NATOM=` grep "NAtoms=" $i | tail -1 | awk ' {print $2} ' `
sed ' /Standard orientation: /, /Rotational constants/! d' ${i} | grep -v -E ' I| C| N| D| R| \-\-\-' | tail -$NATOM | awk ' {gsub(17, "Cl", $2) ;
gsub(16,"S",$2); gsub("1", "H", $2); gsub(6, "C", $2); gsub(7, "N", $2); gsub(8, "O", $2); printf "%5s %10.6f %10.6f %10.6f\n",$2,$4,$5,$6}' > ${NAME}.xyz
done
——————————————————————
楼主,将以上保存为out2xyz.sh,chmod +x out2xyz.sh  在当前目录下执行./out2xyz.sh,就可以批处理提取你要的数据。数据有效数字可以通过调整%10.6f这个格式来得到你要的有效数字。
如果没有得到你要的数据,适当调整该语句(NATOM=` grep "NAtoms=" $i | tail -1 | awk ' {print $2} ' `)就好了。
3楼2016-11-15 20:07:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 BBQY 的主题更新
信息提示
请填处理意见