在 awk 中添加函数时出现语法错误

发布于 2024-12-22 07:43:55 字数 812 浏览 0 评论 0原文

#!/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

我按如下方式调用 awk:

gawk -F',' -f script.awk ${file}
#!/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 {
....

I am trying to add a function in awk, it is giving me syntax error.

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

The awk version is:

bash-3.2$ awk --version
GNU Awk 3.1.5

I am calling the awk like the following:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玩心态 2024-12-29 07:43:55

你的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 前面添加了一个空格,只是为了使该函数更明确。

you're missing a closing '}' on your for loop.

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;
}

I've also added a space in front of tolower, just to make that function explicit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文