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

-E для совместимости с BSD. Это то же самое, что и -r или --regexp-extended — использовать в скрипте расширенные регулярные выражения. См. https://stackoverflow.com/a/3139925/3292582

Для применения изменений вы можете либо

  • использовать временный файл,
  • -i , если ваш sed Версия поддерживает его (GNU sed — по умолчанию в Linux — и BSD sed — который также установлен в OSX — обе поддерживают)
  • ed команда , который имеет другой набор команд.

1
05.08.2018, 16:02
1 ответ

/.../- это своего рода константа регулярного выражения, пытающаяся сопоставить строку "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
0
28.01.2020, 00:31

Теги

Похожие вопросы