Tengo un archivo de texto estructurado test.tr y me gustaría analizarlo con un script AWK, pero por una razón especial quiero que todos los números estén rodeados de guiones bajos, por ejemplo: _0_ debería convertirse en 0. Esto es un ejemplo de archivo de texto de entrada: s 0.000000000 _0_ RTR
Así que estoy intentando usar el comando cortar dentro del script AWK de la siguiente manera:
# AWK script
BEGIN{
# initialization
highest_node_id = 0;
}
{
node_id =
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
}
Pero aparece un error
awk: `analyze.awk: line 37: syntax error at or near cut`
mientras que el mismo comando funciona bien en un script bash.
¿Qué debo hacer?
------------Respuesta------------
Finalmente logré que funcionara usando substr:
tmp_node_id = ;
node_id = substr(tmp_node_id, 2, (length(tmp_node_id) - 2));
printf ("node %s\n", node_id);
------------Respuesta------------
cut funciona en un script bash, pero shell es shell y awk es awk. Tampoco puedes usar comandos perl en scripts awk.
Si desea programas externos dentro de su script, necesita usar el comando del sistema, pero para lo que parece estar haciendo aquí, debe usar las funciones de cadena de awk como substr y gensub.