我是shell脚本的入门者,我想问你一个关于从日志文件中读取数据的问题。该文件非常长,包含很少的计算收敛步骤。
第1步
...
融合
最终能量:1000000
第2步
...
融合
最终能量:10000
...
结构优化
最终能量:100000
我需要做的是首先找到结构是否最终被优化,如果是这样,读取最终能量和其他一些数据。在mathematica中,我可以找到结构优化的位置并从中搜索壳中可能存在的相同内容吗? 我是首发请列出我需要使用的所有命令
答案 0 :(得分:2)
这可能类似于以下内容:
optimized=0
while IFS= read -r line; do
case $line in
"structure optimized")
optimized=1
continue
;;
"final energy")
[ "$optimized" = 1 ] || continue
echo "Found final energy after structure optimized"
;;
esac
done <input.log
如果您将final energy
放入示例文件中,那么您的意思是:
final energy: 10000
...然后您可以将相关条款更改为:
"final energy: "*)
[ "$optimized" = 1 ] || continue
final_energy=${line#*:}
echo "Found optimized final energy: $final_energy"
;;
...但是如果没有详细而准确的说明,那么如何确切地知道你的意思呢?
答案 1 :(得分:1)
在awk版本中
awk '{if($0=="structure optimized")i=1;if(($0~/final energy/) && (i==1)){print "Found optimized "$0;i=0}}' filename