在统计高斯输出文件单点能时,如果只是几个输出文件,手动提取不觉得麻烦,但是如果是几十个,甚至是上万个,手动提取能量显然不太现实,下面的Shell脚本可以批量实现一键提取,自取之:
#!/bin/bash
dir=AbnormalEnergy
mkdir ${dir}
for i in ./*.out #这里./是避免文件名中存在特殊字符,如连接符'-'
do
aa=`more ${i} | grep 'Normal termination'|cut -c 1-7` #在文件中搜索 'Normal termination'字符所在行,如果有就提取前6个字符
if [ $aa = "Normal" ] #注意条件测试语句 [ 符号的两边都要留空格;如果是字符串比较的话, 比较符号两边要留空格
then
energy=`more ${i} | grep 'SCF Done'| tail -n 1 | cut -c 24-41` #从文件搜索'SCF Done'所有行,取最后一行,提取24-40字符
echo "${i} ${energy}" >> GetEnergy.txt
else
cp -- ${i} ${dir}
echo "${i}" >> GetEnergy.txt
fi
done