Получение синтаксической ошибки при добавлении функции в awk - PullRequest
1 голос
/ 21 декабря 2011
#!/bin/gawk
function convertToCamelCase(text)
{
        split(text, words, " "); for (i=1; i<=length(words); i++) { res = res toupper(substr(words[i],1,1))tolower(substr(words[i],2))" ";
        return res;
}
function convertToThreeDigitDecimal(num)
{
        return sprintf("%7.3f",(num/1000000));
}
BEGIN {
....

Я пытаюсь добавить функцию в awk, она вызывает синтаксическую ошибку.

bash-3.2$ ./execute_all_stats.sh.bak file.csv
awk: get_mkt_stats.awk.bak:7: function convertToThreeDigitDecimal(num)
awk: get_mkt_stats.awk.bak:7: ^ syntax error
awk: get_mkt_stats.awk.bak:11: BEGIN {
awk: get_mkt_stats.awk.bak:11: ^ syntax error

Версия awk:

bash-3.2$ awk --version
GNU Awk 3.1.5

Я звоню по телефону следующим образом:

gawk -F',' -f script.awk ${file}

1 Ответ

2 голосов
/ 21 декабря 2011

вам не хватает закрывающего '}' в цикле for.

function convertToCamelCase(text)
{
    split(text, words, " ");
    for (i=1; i<=length(words); i++) { 
        res = res toupper(substr(words[i],1,1)) tolower(substr(words[i],2))" "
     }
 return res;
}

Я также добавил пробел перед tolower, просто чтобы сделать эту функцию явной.

Надеюсь, это поможет.

PS Не забудьте принять ответ, который лучше всего решит вашу проблему, если таковой имеется, нажав на значок галочки, http://i.imgur.com/uqJeW.png. Когда вы увидите хорошие вопросы и ответы, проголосуйте за них.используя серые треугольники, http://i.imgur.com/kygEP.png. Обратите внимание, что «передача» очков репутации другим не означает вычет очков вашей репутации (если вы не отправили награду).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...