我收到以下awk打印错误
awk: cmd. line:1: (FILENAME=- FNR=1) fatal: not enough arguments to satisfy format string `MiNirzRjlOth%ER48R6K0SGDY!' ^ ran out for this one
代码使用
ABC=`echo ${ABC1}| awk '{printf $NF}'`
其中ABC1的值是随机字符串
qmelpv7a1#
不要对任何输入数据($1,$NF,$0,或任何保存先前读取的输入数据的变量)执行printf input_data,因为当输入数据包含像%s这样的printf格式字符时,它会失败,就像您现在看到的%E...出现在输入中一样。
printf input_data
%s
%E...
643ylb082#
printf在awk中是使用格式模板. Documentation here打印一些东西,如果你只是想按原样打印变量,你不需要使用这个。您已经指定了$NF-它是“变量数等于变量数”,实际上是“最后一个变量”。在您的情况下,您可以选择以下选项之一,这将给予相同的结果:
printf
$NF
`awk '{print $NF}'` MiNirzRjlOth%ER48R6K0SGDY!
或使用格式。字符串代码使用%s。
`awk '{printf "%s", $NF}'` MiNirzRjlOth%ER48R6K0SGDY!
使用printf的好处是,你可以用数据填充,左/右调整等等。
2条答案
按热度按时间qmelpv7a1#
不要对任何输入数据($1,$NF,$0,或任何保存先前读取的输入数据的变量)执行
printf input_data
,因为当输入数据包含像%s
这样的printf格式字符时,它会失败,就像您现在看到的%E...
出现在输入中一样。643ylb082#
printf
在awk中是使用格式模板. Documentation here打印一些东西,如果你只是想按原样打印变量,你不需要使用这个。您已经指定了
$NF
-它是“变量数等于变量数”,实际上是“最后一个变量”。在您的情况下,您可以选择以下选项之一,这将给予相同的结果:
或使用格式。字符串代码使用
%s
。使用
printf
的好处是,你可以用数据填充,左/右调整等等。