击:打印字符串值导致错误 [英] Bash: Printing string-value results in error
本文介绍了击:打印字符串值导致错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
致命的:没有足够的论据,以满足格式字符串
`%s的SPT = 80'
^跑出这一个
这是我的code
为((H = 1; H&4;; H ++));做
X = $(AWK -v我= H -v J = 17'FNR == 2 {printf的%S附加$ J}'newiptables.log)
回声$ X
这是我的文件
12月26日9点17分51秒本地主机内核:IN = eth0的OUT = MAC = 00:10:6:A8:DA:68:00:90:7F:9C:50 :5A:08:00 SRC = 198.252.206.16 DST = 10.128.1.225 LEN = 313 TOS = 0×00 preC = 0×00 TTL = 64 n = 59334 PROTO = TCP SPT = 80 DPT = 56506窗口= 46535 RES = 0×00 ACK PSH URGP = 0
12月26日9点17分52秒本地主机内核:IN = eth0的OUT = MAC = 00:10:6:A8:DA:68:00:90:7F:9C:50:5A:08:00 SRC = 198.252.206.16 DST = 10.128.1.225 LEN = 1440 TOS = 0×00 preC = 0×00 TTL = 64 n = 47303 PROTO = TCP SPT = 80 DPT = 56506窗口= 46535 RES = 0×00 ACK URGP = 0
12月26日9点17分52秒本地主机内核:IN = eth0的OUT = MAC = 00:10:6:A8:DA:68:00:90:7F:9C:50:5A:08:00 SRC = 198.252.206.16 DST = 10.128.1.225 LEN = 1440 TOS = 0×00 preC = 0×00 TTL = 64 n = 47559 PROTO = TCP SPT = 80 DPT = 56506窗口= 46535 RES = 0×00 ACK URGP = 0
解决方案
问题是在的printf
命令 AWK 缺少逗号code>:
的awk -v我= H -v J = 17'FNR == 2 {printf的%S,附加$ J}'newiptables.log
^
| ==这是必要的
从手动报价
一个简单的
的printf
语句是这样的:printf格式,项目1,项目2,...
块引用>fatal: not enough arguments to satisfy format string `%s SPT=80' ^ ran out for this one
This my code
for ((h = 1 ; h < 4 ; h++ )); do x=$(awk -v i=h -v j=17 'FNR == 2 {printf "%s " $j}' newiptables.log) echo $x
This is my file
Dec 26 09:17:51 localhost kernel: IN=eth0 OUT= MAC=00:10:c6:a8:da:68:00:90:7f:9c:50:5a:08:00 SRC=198.252.206.16 DST=10.128.1.225 LEN=313 TOS=0x00 PREC=0x00 TTL=64 ID=59334 PROTO=TCP SPT=80 DPT=56506 WINDOW=46535 RES=0x00 ACK PSH URGP=0 Dec 26 09:17:52 localhost kernel: IN=eth0 OUT= MAC=00:10:c6:a8:da:68:00:90:7f:9c:50:5a:08:00 SRC=198.252.206.16 DST=10.128.1.225 LEN=1440 TOS=0x00 PREC=0x00 TTL=64 ID=47303 PROTO=TCP SPT=80 DPT=56506 WINDOW=46535 RES=0x00 ACK URGP=0 Dec 26 09:17:52 localhost kernel: IN=eth0 OUT= MAC=00:10:c6:a8:da:68:00:90:7f:9c:50:5a:08:00 SRC=198.252.206.16 DST=10.128.1.225 LEN=1440 TOS=0x00 PREC=0x00 TTL=64 ID=47559 PROTO=TCP SPT=80 DPT=56506 WINDOW=46535 RES=0x00 ACK URGP=0
解决方案The problem is a missing comma in the
printf
command forawk
:awk -v i=h -v j=17 'FNR == 2 {printf "%s ", $j}' newiptables.log ^ |== This is needed
Quoting from the manual:
A simple
printf
statement looks like this:printf format, item1, item2, ...
这篇关于击:打印字符串值导致错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文