Но это не соответствует случаю, когда строка начинается с VAR_NAME
Так что добавьте этот случай в:
egrep -nH '*[^(]VAR_NAME|^VAR_NAME' $i
| соответствует либо левому, либо правому шаблону. ^ за пределами [] соответствует началу строки.
Обратите внимание, что есть и другие случаи, которые исключают: (VAR_NAME) без предшествующего $ - один. Ответ Тото должен соответствовать этому.
Но даже в этом случае будут пропущены такие случаи, как $(VAR_NAME other stuff , то есть закрывающая скобка отсутствует). Это может быть покрыто с помощью grep дважды:
grep -nH 'VAR_NAME' $i | grep -v '$(VAR_NAME)'
Первое использование grep получает каждую строку, VAR_NAME , второе, с флагом -v , фильтрует выходные данные первого, чтобы удалить все, что соответствует $(VAR_NAME) .