как использовать переменную с awk

у нас есть следующий файл

cat /tmp/hive.conf "hive-exec-log4j2" : { "tag" : "TOPOLOGY_RESOLVED", "version" : 2 }, "hive-interactive-env" : { "tag" : "TOPOLOGY_RESOLVED", "version" : 2 }, "hive-interactive-site" : { "tag" : "TOPOLOGY_RESOLVED", "version" : 2 }, "hive-log4j" : { "tag" : "TOPOLOGY_RESOLVED", "version" : 2 }, "hive-log4j2" : { "tag" : "TOPOLOGY_RESOLVED", "version" : 2 }, 

мы хотим захватить строку после совпадения «hive-log4j» из файла

Итак, мы получаем это:

 cat /tmp/hive.conf | awk '/"hive-log4j"/{getline; print}' "tag" : "TOPOLOGY_RESOLVED", 

Теперь мы хотим сделать то же самое с awk и экспортировать переменную следующим образом:

  val="hive-log4j" cat /tmp/hive.conf | awk -v var=$val '/"var"/{getline; print}' 

но нет выхода

что не так с моим синтаксисом?

/.../ является своего рода константой регулярного выражения, пытающейся найти соответствие строке "var" , а не содержимому var . Пытаться

 awk -v var=$val '$0 ~ var {getline; print}' file 

или же

 awk -v var=$val 'match ($0, var) {getline; print}' file 

Убедитесь, что переменная оболочки содержит двойные кавычки, поскольку они являются частью шаблона. Если это невозможно, попробуйте

 awk -v var=$val 'match ($0, "\"" var "\"") {getline; print}' file