У меня есть файл структурированного текста test.tr
, и я хотел бы проанализировать его со сценарием AWK, но для особой причины я хочу получить все числа, окруженные символами нижнего подчеркивания, например: _0_
должен стать 0
. Это - пример входного текстового файла: s 0.000000000 _0_ RTR
Таким образом, я пытаюсь использовать cut
управляйте в сценарии AWK следующим образом:
# 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
}
Но я получаю ошибку
awk: `analyze.awk: line 37: syntax error at or near cut`
тогда как та же команда работает хорошо в сценарии удара.
Что мне делать?
cut
работает в скрипте bash
, но shell это оболочка, а awk
это awk
. Вы не можете использовать команды perl
в скриптах awk
.
Если вы хотите, чтобы в вашем скрипте были внешние программы, вам нужно использовать команду system
, но для того, что вы здесь делаете, вы должны использовать строковые функции из awk
, такие как substr
и gensub
.
Я наконец заставил его работать, используя substr
:
tmp_node_id = $3;
node_id = substr(tmp_node_id, 2, (length(tmp_node_id) - 2));
printf ("node %s\n", node_id);