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

如何使用awk脚本将行的长度存储到var中?,awk,ksh,Awk,Ksh,我有一个简单的awk脚本,我试图用它检查第一行中的字符数。 如果第一行包含少于10个字符,我希望存储数量 将字符转换为变量。 不知何故,第一个print语句可以工作,但将结果存储到var中却不行。 请帮忙。 我尝试删除美元符号长度=长度$0 删除括号thelength=length$0,但它不打印任何内容 谢谢 #!/bin/ksh awk ' BEGIN {FS=";"} { if (NR==1) if(length($0)!=10) { print(len

我有一个简单的awk脚本,我试图用它检查第一行中的字符数。 如果第一行包含少于10个字符,我希望存储数量 将字符转换为变量。 不知何故,第一个print语句可以工作,但将结果存储到var中却不行。 请帮忙。 我尝试删除美元符号长度=长度$0 删除括号thelength=length$0,但它不打印任何内容

谢谢

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

处理混合ksh和awk脚本的两个问题

不需要在awk内进行子shell调用来获取长度;使用长度=长度$0 引用awk变量时不需要前导$;使用打印,长度 因此,您的代码变成:

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