Usar matrizes ou loops em shells geralmente é sinal de prática de codificação incorreta. Um shell é uma ferramenta para executar outros comandos. awk
é o comando típico para executar tarefas complicadas com campos em registros de texto. Você deseja chamar awk
uma vez para sua tarefa, não um loop no qual você executará centenas de comandos.
Se você quiser imprimir um índice e o último nome de campo para as linhas que começam com ^LogFormat
, é:
awk '/^LogFormat/{print n++, $NF}' httpd.conf
Não há necessidade de cat
(que é para concatenar), nem grep
( awk
é um superconjunto de grep
) ou uma matriz shell ou um loop de shell.