击:打印字符串值,结果未发现 [英] Bash: Printing string value results not found

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

问题描述

当我运行我的脚本,没有输出到终端。

这是我的code:

 为((H = 1; H&4;; H ++));做
    X = $(AWK -v我= H -v J = 17'FNR == I {printf的%S,附加$ J}'newiptables.log)
        回声$ X
DONE

这是文件

  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


解决方案

你的意思是:

 的awk -v我= H -v J = 17 ...

请注意 I = H 这相当于说: I = 0

看来你想说的话:

  X = $(AWK -v I = $ H -v J = 17'FNR == I {printf的%S,附加$ J}'newiptables.log)
             ^
             | ==参考变量h

When I run my script, there is no output to the terminal.

This my code:

for ((h = 1 ; h < 4 ; h++ )); do 
    x=$(awk -v i=h -v j=17 'FNR == i {printf "%s ", $j}' newiptables.log)
        echo $x
done

This is the 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 

解决方案

You are saying:

awk -v i=h -v j=17 ...

Note i=h which is equivalent to saying: i=0.

It seems that you wanted to say:

x=$(awk -v i=$h -v j=17 'FNR == i {printf "%s ", $j}' newiptables.log)
             ^
             |== refer to the variable h

这篇关于击:打印字符串值,结果未发现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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