2013-06-11 4 views
1

В начало дня все .please Я проверил другие ошибки, которые выглядели одинаково или с этим же кодом ошибки. они, похоже, не совпадают. Мне нужна ваша помощь. мотки всеНедопустимый символ '' в выражении

# Create awk program : myflowcalcall.awk 

# a general script for computing throughput 

BEGIN { 
     arguments = 2; 
    if (ARGC < arguments || ARGC > arguments || flowtype == 0) { 
     printf("error: wrong number of arguments.\nawk: usage – awk -f flowcalc.awk [-v graphgran=value] [-v fidfrom=value] [-v fidto=value] [-v fid=value] -v flowtype=\"type\" -v outdata_file=\"filename\" indata_file\n–%d",ARGC); 
     exit; 
           } 
measure_interval = 0.5; 
bits = 0; 
first_time = graphgran; 
    } 

    { 
    if (($1 == "r") && 
    ((fidfrom == 0 && fidto ==0) || (($8 == fid) && ($3 == fidfrom) && ($4 == fidto))) && 
    (flowtype == "all" || flowtype == $5)) { 
if (($2 - first_time) > measure_interval) { 
    first_time = first_time + measure_interval; 
    rate = (bits/1000000)/first_time; 
    print filename first_time, rate; 
         } 
bits = bits + $6 * 8; 
        } 
    } 
END { 
measure_interval = 0.5; 
first_time = first_time + measure_interval; 
rate = (bits/1000000)/first_time; 
print filename first_time, rate; 
} 

есть ошибка,

AWK: myflowcalcall.awk: 20: если (($ 2 - first_time)> measure_interval) { AWK: myflowcalcall.awk: 20:^недействительны char ' ' in expression

Я пробовал и проверял эту ошибку, но безрезультатно. Ниже приводится команда, которую я дал, чтобы запустить из терминала в Ubuntu 12.04LTS

AWK -f myflowcalcall.awk -v graphgran = 0 -v fidfrom = 2 -v fidto = 3 -v FID = 1 -v flowtype =»CBR» -v outdata_file =»ничего» johna4bp.tr> THR1

запустив

xxd myflowcalcall.awk | grep " e2\|e2 " 

производства

00000f0: 6177 6b3a 2075 7361 6765 20e2 8093 2061 awk: usage ... a 
0000190: 6174 615f 6669 6c65 5c6e e280 9325 6422 ata_file\n...%d" 
00002c0: 2828 2432 20e2 8093 2066 6972 7374 5f74 (($2 ... first_t 

Могу я узнать точки ошибки. спасибо

+1

'' 'выглядит плохо. Измените их для '' '. – fedorqui

+0

Почему они выглядят так хорошо?: P –

+0

fedorqui thanks. Я изменил это и все еще дал ошибку« awk: myflowcalcall.awk: 20: if (($ 2 - first_time)> measure_interval) { awk: myflowcalcall.awk: 20:^invalid char ' ' в выражении " –

ответ

0

Вы, кажется, использовали редактор с поддержкой unicode в какой-то момент, который заменил некоторые ваши простые символы похожими многобайтовыми символами.

Коды для цитаты и тире замены начинаются с е2, попробуйте

xxd myflowcalcall.awk | grep " e2\|e2 " 

найти их

+0

спасибо. не могли бы вы дать больше объяснений по этому поводу? мне нужно использовать эту строку, которую вы дали, чтобы исправить код? –

+0

e2 не является простым символом ascii, поэтому он не должен появляться в awk-скрипте. Этот однострочный сканер просто покажет вам, где они появляются в вашем коде, чтобы вы могли их удалить. Я вижу 3 места в приведенном выше коде: тире в использовании - awk, -% d и $ 2 - first_time – Joe

+0

в вашем выводе xxd, ищите e2 80 93 в шестнадцатеричной части, которая отображается как ... в текстовая часть. Это указывает на UTF-8 en-dash, когда вам понадобится hypen-minus (hex code 2d) – Joe

1

Посмотрите на свой код, я вижу проблему с - характером. Некоторые из них более длинные, чем другие, что означает, что они не интерпретируются правильно.

+0

спасибо за время. Я изменил их, но все равно та же ошибка, что и у меня. –

+0

@forgoodGOD Можете ли вы обновить свой вопрос с помощью модифицированного кода? –

+0

спасибо всем. Я снова изменил файл и не дал никакой ошибки, но он производит результат 0,5 вместо серии данных в столбце. –

0

Я новичок в написании сценариев, но не первый_time = graphgran должен быть first_time = graphgran Я имею в виду без пробелов?