У меня есть файл с широким спектром информации, и я хочу извлечь некоторые данные отсюда. Я только опубликую здесь интересную часть. Я хочу извлечь значения IQ и JQ, а также значение J_ij [meV], которое двумя строками выше. Я прочитал этот вопрос Как напечатать 5 последовательных строк после шаблона в файле, используя awk , где шаблон используется для извлечения информации ниже, и я думал сделать что-то подобное. Моя первоначальная идея была:
awk '/IQ =/ { print $6,$12 } /IQ =/ {for(i=2; i<=2; i++){ getline; print $11 }}' input.text > output.txt
L oop, кажется, не работает
IT IQ JT JQ N1 N2 N3 DRX DRY DRZ DR J_ij [mRy] J_ij [meV]
IT = 1 IQ = **1** JT = 1 JQ = **1**
->Q = ( -0.250, 0.722, 0.203) ->Q = ( -0.250, 0.722, 0.203)
1 1 1 1 0 0 0 0.000 0.000 0.000 0.000 0.000000000 **0.000000000**
IT = 1 IQ = **1** JT = 6 JQ = **6**
->Q = ( -0.250, 0.722, 0.203) ->Q = ( 0.000, 1.443, 0.609)
1 1 6 6 -1 0 -1 -0.250 -0.144 -0.406 0.498 0.135692822 **1.846194885**
IT = 1 IQ = **1** JT = 8 JQ = **8**
->Q = ( -0.250, 0.722, 0.203) ->Q = ( 0.000, 0.577, 0.609)
1 1 8 8 0 0 -1 0.250 -0.144 -0.406 0.498 0.017676555 **0.240501782**
Мой ожидаемый результат:
IQ JQ J_ij [meV]
1 1 0.000000000
1 6 1.846194885
1 8 0.240501782
Он выделен жирным шрифтом слова (** **), первая строка только индикативная.