У меня довольно большой файл, содержащий много ненужных вещей, и мне нужно отфильтровать его. Итак, меня интересует вот что:
iteration # 20 ecut= 36.00 Ry beta=0.10
Davidson diagonalization with overlap
ethr = 4.07E-13, avg # of iterations = 3.8
total cpu time spent up to now is 351441.3 secs
End of self-consistent calculation
Number of k-points >= 100: set verbosity='high' to print the bands.
highest occupied, lowest unoccupied level (ev): 2.2896 4.1062
Хорошо, поэтому мне нужно вычислить: Bg = ELUMO-EHOMO, тогда как ELUMO и EHOMO - это самые высокие и самые низкие занятые значения. Проблема в том, что я хочу получить такой вывод:
Iteration #<number>
Bg=xxx
Мои 2 вопроса: 1. Я могу выполнить grep по 'наивысшей' строке, поэтому я получаю каждую строку вроде:
highest occupied, lowest unoccupied level (ev): 2.3005 4.0791
Но как я могу установить переменные на самый высокий и самый низкий уровень незанятости?
2. Поскольку не каждая итерация дает мне значения уровней незанятости (я хочу пропустить это затем), как я должен найти / найти иметь всегда номер итерации и незанятые уровни?