击:打印字符串值导致错误 [英] Bash: Printing string-value results in error

查看:114
本文介绍了击:打印字符串值导致错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 致命的:没有足够的论据,以满足格式字符串
    `%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

 的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 for awk:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆