К сожалению, ваш сценарий оболочки - просто неправильный подход к этой проблеме (см. https://unix.stackexchange.com/q/169716/133219 по некоторым причинам), поэтому вам следует отложить его и начать все сначала.
Чтобы продемонстрировать решение, давайте создадим пример входного файла:
$ seq 10 | tee file
1
2
3
4
5
6
7
8
9
10
и переменную оболочки для хранения регулярного выражения, представляющего собой список символов из символов 5, 6 или 7:
$ var='[567]'
Теперь,учитывая приведенные выше данные, вот решение для g/re/p pattern as variable and count how many results
:
$ awk -v re="$var" '$0~re{print; c++} END{print "---" ORS c+0}' file
5
6
7
---
3
Если это не все, что вам нужно, отредактируйте ваш вопрос, чтобы уточнить ваши требования и предоставить краткий, тестируемый пример ввода и ожидаемый результат.