porque meu script bash só gera uma linha na variável awk de eco

1

Qualquer um pode dizer que sou novo no script e tentei fazer o mesmo antes de postar aqui. Eu tenho o que eu acho que é um script simples, analisando o arquivo de zona DNS para IP e nomes de domínio exclusivo. Eu tenho os resultados que eu quero com o awk outout embora eu estou tendo problemas para colocar tudo isso em um script para a saída de um arquivo formatado esperado para entrada em outro sistema. a saída está imprimindo apenas uma linha por pesquisa.

#/bin/bash
addresses=($(grep '<uniquefield>' <filename> | awk -F'[ .]' '{print  "."  "."  "." "/"}'))
domains=($(grep -v '<uniquefield>' <filename> | awk '<uniquefield> {print }'|awk -F'.' 'sub(FS $(NF-4) FS $(NF-3) FS $(NF-2) FS $(NF-1) FS $NF,"")'))

echo ${addresses[1]}
echo ${domains[2]}

for i in "${addresses[@]}"
do
    :
    echo $addresses, disable, , , >import.csv
done
for i in "${domains[@]}"
do
    :
    echo $domains, disable, , , >>import.csv
done
    
por carter 09.10.2014 / 18:38

1 resposta

3

Você não está usando a variável $i dentro do loop

for i in "${addresses[@]}"; do
# ..^
    echo $addresses, disable, , , >import.csv
# .......^^^ should be: echo $i, ...
done

Para uma variável de matriz, quando você imprime a variável sem especificar um índice, o bash parece fornecer apenas o primeiro elemento.

$ x=( one two three )
$ echo $x
one
    
por glenn jackman 09.10.2014 / 19:18