shell awk打印获取错误-没有足够的参数来满足格式字符串

twh00eeo  于 2023-02-24  发布在  Shell
关注(0)|答案(2)|浏览(365)

我收到以下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的值是随机字符串

qmelpv7a

qmelpv7a1#

不要对任何输入数据($1,$NF,$0,或任何保存先前读取的输入数据的变量)执行printf input_data,因为当输入数据包含像%s这样的printf格式字符时,它会失败,就像您现在看到的%E...出现在输入中一样。

643ylb08

643ylb082#

printf在awk中是使用格式模板. Documentation here打印一些东西,如果你只是想按原样打印变量,你不需要使用这个。
您已经指定了$NF-它是“变量数等于变量数”,实际上是“最后一个变量”。
在您的情况下,您可以选择以下选项之一,这将给予相同的结果:

`awk '{print $NF}'`  
 MiNirzRjlOth%ER48R6K0SGDY!

或使用格式。字符串代码使用%s

`awk '{printf "%s", $NF}'`
 MiNirzRjlOth%ER48R6K0SGDY!

使用printf的好处是,你可以用数据填充,左/右调整等等。

相关问题