gpt4 book ai didi

linux - 选择一行时在awk中有条件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:06 26 4
gpt4 key购买 nike

抱歉,如果标题不是最好的。让我解释一下,也许这会有所帮助:

我正在选择带有“User-Agent”的一行,我想使用 $(NF-6) 和 $(NF-5) 但在某些情况下,该行没有那么多标记,所以我想像我下面说的那样做:

if (/User-Agent/$(NF-6)>0)
/ User-Agent/{os=$(NF-6)" "$(NF-5)}
else
/ User-Agent/{os=$NF)}

我使用的语法肯定是错误的:

awk: cmd. line:5:     if (/User-Agent/$(NF-6)>0)
awk: cmd. line:5: ^ syntax error
awk: cmd. line:7: else
awk: cmd. line:7: ^ syntax error

如有任何帮助,我们将不胜感激!


如果有帮助,完整的脚本:

#!/bin/bash
echo $1;
awk '
/Internet Protocol Version 4, Src:/{ip=$(NF-4)}
/ Time to live/{ttl++}
/ Time to live/{sttl=$NF}
if (/User-Agent/$(NF-6)>0)
/ User-Agent/{os=$(NF-6)" "$(NF-5)}
else
/ User-Agent/{os=$NF)}
/ User-Agent/{brow=$NF}
/ User-Agent/{agent++}
/ User-Agent/{stringtemp=sttl"\t"ip"\t"os"\t"brow}
/ User-Agent/{string=(string)"\n"(stringtemp)}
/Windows;/{windows++}
/Linux;/{linux++}
/Solaris;/{solaris++}
/No. Time Source Destination Protocol Length Info/{count++}
END{
sub(/\\r.*$/, "", brow);
print "("count")" > "temp";
print "TTL\tIP\t\tOS\t\tBROWSER";
print string;
print "\nSUMMARY\n\tttl\t=\t"ttl"\n\twindow\t=\t"windows/2"\n\tlinux\t=\t"linux/2"\n\tsolaris\t=\t"solaris/2 >> "temp";
}
' $1 > summary_$1;
sort -k2n summary_$1 | uniq > holder;
cat temp > useragents_$1;
cat holder >> useragents_$1;
more useragents_$1;

最佳答案

只需像这样比较 NF 变量,以确保有许多字段可用:

awk '/User-Agent/ && NF > 6 {...}'

关于linux - 选择一行时在awk中有条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18110873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com