gpt4 book ai didi

linux - 优化 grep、awk 和 sed shell 内容

转载 作者:太空狗 更新时间:2023-10-29 11:24:57 24 4
gpt4 key购买 nike

我尝试对来自“IPCop”的日志文件中不同端口的流量求和,因此我为我的 shell 编写和命令,但我认为可以优化命令。

我的日志文件中的第一行:

01/00:03:16 kernel INPUT IN=eth1 OUT= MAC=xxx SRC=xxx DST=xxx LEN=40 TOS=0x00 PREC=0x00 TTL=98 ID=256 PROTO=TCP SPT=47438 DPT=1433 WINDOW=16384 RES=0x00 SYN URGP=0 

现在我用以下命令 grep 包含端口 1433 的所有长度的总和

grep 1433 log.dat|awk '{for(i=1;i<=10;i++)if($i ~ /LEN/)print $i};'|sed 's/LEN=//g;'|awk '{sum+=$1}END{print sum}'

我需要 for 循环,因为 LEN-col 始终不在同一位置。

有什么优化这个命令的建议吗?

问候雷内

最佳答案

由于我没有代表为 Noufal Ibrahims 的回答添加评论,这里是使用 Perl 的更自然的解决方案。

perl -ne '$sum += $1 if /LEN=(\d+)/; END { print $sum; }' log.dat

@Noufal 你可以让 perl 完成所有艰苦的工作;)。

关于linux - 优化 grep、awk 和 sed shell 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2949405/

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