Posso acessar uma matriz criada em um script awk em um script awk subseqüente?

1

Eu tenho um script de shell onde há duas strings do awk.

first_awk='
BEGIN {
}
{
# create some array here..
}
END{
}
'



second_awk='
BEGIN {
}
{

## Access the array created in first awk section.
}
END{
}
'

É possível fazer algo como acima? Acessando uma matriz criada na primeira seção do awk na seção posterior do awk?

Ou, posso ter uma matriz declarada em um script de shell e acessá-la em ambas as strings do awk?

    
por Venkat Teki 29.02.2016 / 14:57

2 respostas

2

Se você atribuir bits de código awk a variáveis de shell que serão combinadas para criar um único programa alimentado com uma única invocação de awk, você poderá acessar matrizes criadas em um do outro. No entanto, parece mais que você está criando programas awk separados para serem alimentados para separar a invocação do awk. Nesse caso, o código passado para um awk não saberá sobre o código passado para o outro (incluindo declarações de array).

    
por 29.02.2016 / 15:52
1

parece-me que se você tentar

awk -f first_awk -f second_awk ...

O arquivo awk irá "mesclar" de acordo com a ordem das chamadas. Você pode usar variável / matriz definida em first_awk de second_awk .

No entanto, se você tentar

awk -f first_awk ...
/bin/ls
awk -f second_awk ...

second_awk não tem como saber a variável / array usada durante a chamada do first_awk.

Cada chamada de awk cria um novo processo que é descartado no final da execução.

    
por 29.02.2016 / 17:11

Tags