Я хочу обработать определенный блок в файле.И работа, которую я хочу, это суммировать столбец в блоке.Возможно ли использовать awk?Или другой командир лучше?
- найдите str1 ("атомы" в образце)
- , затем начните суммировать восьмой столбец $ 7
- и остановитесь, если найдетеstr2 («облигации» в образце)
В настоящий момент я могу сделать следующее:
awk 'BEGIN { i=0; sum=0.0;} { if ($9) { print $7; sum+=$7;}} END {printf "total charge is %10.6f", sum}'
В этом случае, если где-то в 9-м столбце есть другие значения,это будет ошибка.
[пример файла w.1500 строка]
.... 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