如何使用 awk 脚本将一行的长度存储到 var 中?

How can I store the length of a line into a var withing awk script?

我有这个简单的 awk 脚本,我试图用它来检查第一行中的字符数。 如果第一行少于 10 个字符,我想存储数量 字符到一个变种。 第一个 print 语句以某种方式起作用,但将该结果存储到 var 中却不起作用。 请帮忙。 我尝试删除美元符号“ thelength=(length($0))” 并删除括号“thelength=length($0)” 但它不打印任何内容...

谢谢!

#!/bin/ksh
awk ' BEGIN {FS=";"}
{
 if (NR==1)
        if(length([=10=])!=10) 
    {
    print(length([=10=]))
    thelength=$(length([=10=]))
    print "The length of the first line is: ",$thelength;
    exit 1;
    }
    }
    END { print "STOP"  }' 

处理混合 kshawk 脚本的两个问题...

  • 无需在awk内进行子shell调用获取长度;使用 thelength=length([=14=])
  • awk变量在被引用时不需要前导$;使用 print ... ,thelength

因此您的代码变为:

#!/bin/ksh
awk ' BEGIN {FS=";"}
{
 if (NR==1)
        if(length([=10=])!=10) 
    {
    print(length([=10=]))
    thelength=length([=10=])
    print "The length of the first line is: ",thelength;
    exit 1;
    }
    }
    END { print "STOP"  }'