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);
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?
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);
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
.