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

如何在sed中调用$IP变量注释指定规则且避免重写整个文件?

实现方法

核心思路

通过sed的原地编辑功能,结合变量匹配目标IP与SSHBRUTE规则行,直接在行首添加注释,无需重写整个文件。

具体步骤

  1. 确保正确获取目标IP
    先通过筛选命令把需要处理的IP存入$IP变量,根据你的规则文件格式调整列数:

    # 提取含2228端口/SSHBRUTE且排除10.10.10.10的IP,假设IP在第3列
    IP=$(grep -E '2228|SSHBRUTE' rules.conf | grep -v '10.10.10.10' | awk '{print $3}')
    
  2. 处理多IP场景(可选)
    如果$IP包含多个空格分隔的IP,转成sed能识别的正则匹配模式:

    IP_PATTERN=$(echo "$IP" | tr ' ' '|')
    
  3. 用sed添加注释

    • 单IP情况:
      # 匹配含目标IP和SSHBRUTE的行,行首加#
      sed -i "/$IP.*SSHBRUTE/s/^/#/" rules.conf
      
    • 多IP情况:
      # 匹配任意目标IP和SSHBRUTE的行,行首加#
      sed -i "/\($IP_PATTERN\).*SSHBRUTE/s/^/#/" rules.conf
      

关键细节

  • 转义IP中的点号:sed会把.当作任意字符,所以需要转义IP里的.,可以在提取IP时处理:
    IP=$(grep -E '2228|SSHBRUTE' rules.conf | grep -v '10.10.10.10' | awk '{print $3}' | sed 's/\./\\./g')
    
  • 跨平台兼容:如果是BSD系统(比如macOS),sed的-i参数需要加空字符串:
    sed -i '' "/$IP.*SSHBRUTE/s/^/#/" rules.conf
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:15:01