Похоже, вы говорите: «Я хочу, чтобы второе поле в строке сразу после строки, содержащей слово ENERGY
(в котором ENERGY
находится второе поле)». Если это то, что вы хотите, вы можете сделать это с помощью
awk '/ENERGY/ { found_it=1; next; } found_it { print $2; found_it=0; }'
(Поместите свое имя файла в конце этой команды - сразу после }'
- или передайте свои данные в вышеупомянутую команду.)
Это просто
- Ищет строку, которая содержит строку
ENERGY
,- устанавливает флаг (
found_it
), когда это делает, - и пропускает эту строку.
- устанавливает флаг (
- Когда он встречает строку, и
found_it
флаг установлен, это означает, что предыдущая строка содержалаENERGY
, так- выведите второе слово из этой строки и
- очистить (обнулить)
found_it
флаг, поэтому мы не производим вывод из любых последующих строк.
Если файл имеет ENERGY
строки 4, 14 и 24, то приведенная выше команда выведет второе поле из строк 5, 15 и 25. Если это не то, что вам нужно, более простой подход
awk '/ENERGY/ { found_it=1; next; } found_it { print $2; exit; }'
который совпадает с первым, за исключением того, что после печати второго поля из строки 5 он просто перестает смотреть. Даже если ENERGY
в файле появляется только один раз, этот подход предпочтителен, так как не требует чтения всего файла, а только до желаемого значения.
Эти команды будут:
- найти строку,
ENERGY
даже если он является частью более длинного слова, такие какCENERGY
,ENERGY-CONSUMING
,ENERGYLEVEL
илиHIGH-ENERGY
. - найти строку,
ENERGY
даже если это не второе поле в ее строке. - выведите значение второго поля, а не поля, в котором оно найдено
ENERGY
. - не найти
Energy
илиenergy
. - молча провалиться, если
ENERGY
находится на последней строке.
Если это проблемы, отредактируйте свой вопрос, чтобы указать свои требования.