> z1=$(awk '{print $5}' file) не подходит, потому что
> awk-скрипт парсит файл, выводит строки по некоторым условиям и считает количество выведенных
> строк.
> Значение количества строк хотелось бы вернуть в sh, чтобы использовать в другом
> awk.Вы заблуждаетесь. Отлично все подходит. Вы можете z1 подставить в текст программы awk
z1=$( awk 'program1' file )
awk "BEGIN { count=$z1 } /.../{ ... тут что-то с использованием $count... }" file2
либо сразу в тело
awk "/.../{ .... ${z1} ..... }" file2
Советую посмотреть какие-нибудь книжки про шелл скриптинг, sed и awk, чтобы увидеть примеры и понять, как с этим работают.
Уверен, что после пары часов чтения вы перепишете свои упражнения гораздо логичнее и короче.