Variables awk未按预期打印变量

Variables awk未按预期打印变量,variables,awk,Variables,Awk,努力让awk打印出以下变量。但不管我怎么努力 awk -F, -v x=$CLIENT_ID -v y=$BRANCH -v z=$UUID -v b=$HERMES_GROUP_CSV_ID 'BEGIN { OFS = ","; ORS = "\n" } { if (length($3) == 0) { printf "\nCLIENT $x at $y Linux System Time: $z Pacific Time: $b ##

努力让awk打印出以下变量。但不管我怎么努力

awk -F, -v x=$CLIENT_ID -v y=$BRANCH -v z=$UUID -v b=$HERMES_GROUP_CSV_ID 'BEGIN {
    OFS = ","; ORS = "\n"
    } {
        if (length($3) == 0) {
            printf "\nCLIENT $x at $y Linux System Time: $z Pacific Time: $b #####: Column 3, Row "; printf NR; printf " data missing in the Client $x group input csv. Please check\n"
        }
     }' ${INPUT_FILE}
它总是打印出来

CLIENT $x at $y Linux System Time: $z Pacific Time: $b #####: Column 3, Row 249 data missing in the Client $x group input csv. Please check

任何古鲁都能开悟吗?谢谢。

您正在使用
$x
作为变量引用,但awk中的
$
是引用输入中的字段。变量的使用没有修饰,比如
x
。因此:

awk -F, -v x=$CLIENT_ID -v y=$BRANCH -v z=$UUID -v b=$HERMES_GROUP_CSV_ID 'BEGIN {
    OFS = ","; ORS = "\n"
    } {
        if (length($3) == 0) {
            print "\nCLIENT "x" at "y" Linux System Time: "z" Pacific Time: "b" #####: Column 3, Row "; printf NR; printf " data missing in the Client "x" group input csv. Please check\n"
        }
    }' ${INPUT_FILE}

看起来这里引用了
x
,但事实并非如此:关键是
x
不出现在带引号的字符串中,以便可以将其展开为变量。

您使用
$x
作为变量引用,但awk中的
$
是引用输入中的字段。变量的使用没有修饰,比如
x
。因此:

awk -F, -v x=$CLIENT_ID -v y=$BRANCH -v z=$UUID -v b=$HERMES_GROUP_CSV_ID 'BEGIN {
    OFS = ","; ORS = "\n"
    } {
        if (length($3) == 0) {
            print "\nCLIENT "x" at "y" Linux System Time: "z" Pacific Time: "b" #####: Column 3, Row "; printf NR; printf " data missing in the Client "x" group input csv. Please check\n"
        }
    }' ${INPUT_FILE}

看起来这里引用了
x
,但事实并非如此:关键是
x
不出现在引用的字符串中,这样它就可以作为变量展开。

@EdMorton:这一点很好,但在这种情况下,它应该是
print
,而不是
printf
,因为OP实际上没有使用格式字符串。更新。@EdMorton:这一点很好,但在本例中,它应该是
print
,而不是
printf
,因为OP实际上并没有使用格式字符串。更新。