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

如何通过Bash命令过滤IP地址并实现单IP仅保留一条记录

Bash命令实现IP去重(保留每个唯一IP一条记录)

方案1:保留每个IP首次出现的条目

直接在原有命令后追加awk处理逻辑,按IP部分去重,只输出首次出现的完整行:

netstat -tapen | grep :631 | awk '{print $5}' | grep -v '0.0.0.0' | awk -F: '!seen[$1]++'

原理:用冒号分割提取IP部分($1),通过数组seen记录已出现的IP,只有当IP第一次出现时才打印整行。

方案2:保留每个IP最后出现的条目

如果需要保留每个IP最后出现的那条记录,用awk缓存每个IP的最新行,最后统一输出:

netstat -tapen | grep :631 | awk '{print $5}' | grep -v '0.0.0.0' | awk -F: '{line[$1]=$0} END{for(ip in line) print line[ip]}'

原理:遍历所有行时,用数组line持续更新每个IP对应的最新行,遍历结束后输出所有IP的最终缓存行。

高效简化版(合并管道步骤)

把多个grep/awk步骤合并,减少管道开销:

netstat -tapen | awk '/:631/ && $5 !~ /0.0.0.0/ {split($5, ip_port, ":"); if(!seen[ip_port[1]]++) print $5}'

原理:在单个awk进程里完成匹配631端口、排除0.0.0.0、拆分IP和端口、去重打印的全部逻辑,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:51:17