Como adicionar números aos elementos do array awk?

3

Se eu tiver a seguinte variável bash:

$ echo "${pos}"

201
719
744
205
354

... o seguinte produz ...

!#bin/bash
(
    IFS=: 
    awk -v str2="$pos" -v sep="[$IFS]" '
        BEGIN {
            m = split(str2, b, sep)
            for (i=1; i<=m; ++i) {print b[i]}
        }
    '
)

-----------------
$ ./myscript.sh

201
719
744
205
354

... mas depois fazendo ...

(
    IFS=: 
    awk -v str2="$pos" -v sep="[$IFS]" '
        BEGIN {
            m = split(str2, b, sep)
            for (i=1; i<=m; ++i) {print b[i]+10}
        }
    '
)

------
./myscript.sh

211

... então a adição está funcionando, mas não imprime resultados para todos os elementos. Porque não?

    
por brucezepplin 10.03.2015 / 10:10

1 resposta

4

É o seu IFS =: não definido corretamente. Então split () não preenche o array com valores mas preenche com um valor o str2, então no seu loop for você imprime b [i] mas na verdade você imprime uma vez b [1] que é toda sua str2 e porque ela tem novas linhas que você acha que imprime membros da matriz b, mas se você verificar m o valor retrn de split () é 1. Remova IFS =: e seu script deve funcionar corretamente.

    
por 10.03.2015 / 11:02

Tags