首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件中某个块中的列和: awk可以这样做吗?

文件中某个块中的列和: awk可以这样做吗?
EN

Stack Overflow用户
提问于 2018-09-27 02:55:50
回答 1查看 75关注 0票数 0

我想处理文件中的某个块。我想要的工作是和块中的列。有可能使用awk吗?还是其他指挥官更好?

  1. 找到一个str1 (样本中的“原子”)
  2. 然后开始和第八栏$7
  3. 如果你找到str2 (样本中的“债券”),就停止

现在我能做的是

代码语言:javascript
复制
awk 'BEGIN { i=0; sum=0.0;} { if ($9) { print $7; sum+=$7;}} END {printf "total charge is %10.6f", sum}'

在这种情况下,如果第9列中有另一个值,这将是错误的.

示例文件w. 1500行

代码语言:javascript
复制
.... many lines
[ atoms ]
;   nr  type  resi  res  atom  cgnr     charge      mass       ; qtot   
 1   c3     1     2     C    1     0.138400     12.01000 ; qtot 0.138
 2   os     1     2     O    2    -0.436600     16.00000 ; qtot -0.298
 3   c3     1     2    C1    3    -0.093400     12.01000 ; qtot -0.392
 4   c3     1     2    C2    4    -0.076400     12.01000 ; qtot -0.468

[ bonds ]
;   ai     aj funct   r             k
     1      2   1    1.4316e-01    2.5824e+05 ;      C - O
.... many lines are followed
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 05:58:46

您可以试试这个awk脚本:

代码语言:javascript
复制
awk '$0=="[ atoms ]"{go=1}                         # Set flag to start the sum
     go{sum+=$7}                                   # If flag set sum the 8th column
     $0=="[ bonds ]"{go=0}                         # End the sum
     END{printf "total charge is %10.6f\n",sum}    # Print result
' file
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52528723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档