Проблема в том, что вы запускаете все это в блоке BEGIN
, поэтому он никогда не видит данные. Просто удалите "BEGIN {" и последний "}", и все должно работать нормально.
Блок BEGIN
запускается перед чтением любых данных и используется для инициализации. Структура программы Awk выглядит следующим образом (BEGIN
, основной цикл данных - состоящий из одного или нескольких блоков - и END
каждый необязательный):
BEGIN {
}
{
}
END {
}
Программные блоки в основном цикле могут иметь различные условные выражения, регулярные выражения или шаблоны, которые определяют, будут ли они выполняться.
Кроме того, ваш цикл должен быть остановлен перед последним полем, поскольку он не может получить следующий после последнего:
for(i=1;i<NF;i++){
И эта строка не будет работать, если вы не удалите знак доллара:
print $duration
Поскольку вы ничего не делаете с возвращаемыми значениями split
, вы можете исключить присвоение переменной или повторно использовать переменную:
split($i,t,":")
split($(i+1),w,":")
или
m=split($i,t,":")
m=split($(i+1),w,":")
Кроме того, когда вы отправляете вопрос «не работает», он не очень информативен.