Как получить значение столбца на основе значения соседнего столбца в Linux?

Я хочу получить значение столбца на основе значения следующего столбца. Я grep для столбца, имеющего значение хоста и хочу напечатать предыдущее значение столбца

попытался использовать grep -Po ".* (?=host)" но не получил правильный вывод

Файл test.log содержит ниже примерные данные (все в одной строке)

test Plus 193310 68FAD575EC59C2C6 exa4dbadm03  host                     


cat test.log|grep -i 193310|grep -i host|grep -Po ".* (?=host)"

Я пытаюсь grep столбца, который имеет значение в качестве хоста и печатать предыдущее значение столбца. В этом случае я хочу получить exa4dbadm03 в качестве вывода

ожидаемый результат: exa4dbadm03

Всего 1 ответ


Почему бы тебе не использовать awk для этого? Например:

awk '{for(i=2;i<=NF;++i){if($i=="host"){print $(i-1);break}}}' file