мне нужно обработать вывод, который выглядит, как показано ниже:AWK разбор вывода и извлечение значений
my_first_key: {i}text
my_first_key: {j}different_text
my_first_key: {k}some_text
my_second_key: value1
my_first_key: {l}some_text
my_second_key: value2
Линия всегда начинается с одного из двух ключей, а затем :
затем пробела, то либо индекс в фигурных скобках для одного ключа , или сразу же значение для второго ключа. Строке с ключом второго типа и значению всегда предшествует строка с первым ключом и индексом.
Мне нужно две функции:
array()
: возвратить массив в качестве{k:value1, l:value2}
.index(value)
, чтобы вернуть значение индекса из предыдущей строки, такindex(value2)
возвращаетl
.
Я вижу примеры, чтобы вернуть номера строк и т.д., но мой awk
уровень 0.
[От Моше комментарий] Алгоритм таков:
a) awk '/$value/{ print NR; exit }'
b) awk 'NR==$(previous_return - 1)
c) awk '{split($0,a,"{}") | print a[2]
Каков ваш ожидаемый результат над образцом? – anubhava
в зависимости от того, какая функция вызывается. array() вернет {k: значение1, l: значение2}. это может быть две строки $ index: $ value или что-то еще. index (value1) возвращает 'k', а index (value2) возвращает 'l' и т. д. –
Да, чтобы эхо anubhava, отредактируйте свой вопрос, чтобы добавить для каждой функции ожидаемый результат, и, пожалуйста, убедитесь, что это точный результат, который вы ожидаете от вход, который вы уже разместили. – jas