Comando Substitute cut dentro do script AWK

0

Eu tenho um arquivo de texto estruturado test.tr , e gostaria de analisá-lo com um script AWK, mas por uma razão especial eu quero colocar todos os números com sublinhados, por exemplo: _0_ deve se tornar 0 . Este é um exemplo de arquivo de texto de entrada: s 0.000000000 _0_ RTR

Estou tentando usar o comando cut no script AWK da seguinte forma:

# AWK script
BEGIN{
 # initialization
 highest_node_id = 0;
}
{
    node_id = $3
    node_id = node_id | cut -d "_" -f2 | cut -d "_" -f1 ;# this line causes error 
    if (node_id > highest_node_id) {
        highest_node_id = node_id;
    }
}
END{
 #print results
}

Mas recebo um erro

awk: 'analyze.awk: line 37: syntax error at or near cut'

enquanto o mesmo comando funciona bem em um script bash.

O que devo fazer?

    
por A. AlmasrI 14.09.2017 / 09:41

2 respostas

0

Eu finalmente consegui que funcionasse usando substr :

tmp_node_id = $3;
node_id = substr(tmp_node_id, 2, (length(tmp_node_id) - 2));
printf ("node %s\n", node_id);
    
por A. AlmasrI 24.09.2017 / 18:21
0

cut funciona em um script bash , mas o shell é shell e awk é awk . Você não pode usar os comandos perl em awk scripts.

Se você quiser programas externos em seu script, precisará usar o comando system , mas, para o que parece estar fazendo aqui, use as funções de string de awk like substr e gensub .

    
por Philippos 22.09.2017 / 08:27