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 .