You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Fortigate日志文件中匹配指定字符串后移除后续字符?

移除Fortigate日志中srcport字段的内容

针对Fortigate日志行(比如srcip=10.1.100.11 srcport=58012 srcintf="port12" ...),以下是两种实用的处理方法:

方法1:固定移除srcport后的指定内容(适用于端口长度固定的场景)

如果端口长度固定为5位,要移除srcport=后的端口值,用sed直接替换:

sed 's/srcport=.\{5\}//' log.txt

示例输入:

srcip=10.1.100.11 srcport=58012 srcintf="port12" dstip=192.168.1.1

执行命令后输出:

srcip=10.1.100.11 srcport= srcintf="port12" dstip=192.168.1.1

要是想把整个srcport=xxxxxx字段(包括srcport=)删掉,用:

sed 's/srcport=.\{5\} //' log.txt

输出会变成:

srcip=10.1.100.11 srcintf="port12" dstip=192.168.1.1

方法2:匹配到srcintf前的空格自动移除(适用于端口长度不固定的场景)

如果端口长度不固定,用sed匹配srcport=到下一个空格之间的所有内容并删除:

sed 's/srcport=[^ ]* //' log.txt

解释:[^ ]*表示匹配任意非空格字符,不管端口是3位、4位还是5位,都会把srcport=xxxx连同后面的空格一起删掉,直接衔接下一个字段。

示例输入同上,执行后输出:

srcip=10.1.100.11 srcintf="port12" dstip=192.168.1.1

方法3:用awk过滤字段

如果需要更灵活的字段处理,用awk遍历每个字段,跳过包含srcport=的字段:

awk '{for(i=1;i<=NF;i++) if($i !~ /srcport=/) printf "%s ",$i; print ""}' log.txt

解释:NF是当前行的字段总数,遍历每个字段,只要字段不包含srcport=就打印,最后换行补全格式。

内容的提问来源于stack exchange,提问作者user29447110

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:15:56