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

如何用Bash脚本实现端口行前置所属IP/FQDN并格式化输出

Bash脚本实现方案

方案1:单行awk命令(直接运行,无需临时文件)

完全匹配你的所有需求,执行后直接输出目标结果:

awk '/\./{prefix=$0;next} /tcp|udp/{gsub("/"," ");print prefix $0}' file.txt

逻辑说明:

  • 匹配到包含.的行时,将当前行内容存为prefix前缀变量,直接跳过后续处理读取下一行
  • 遇到端口行时,先判断是否包含tcp/udp关键词,符合条件则把行内的/替换为空格,最后输出前缀变量拼接处理后的端口行
  • 无对应端口的IP/FQDN行会被自动过滤,因为没有后续端口行触发输出逻辑

方案2:封装为可复用Bash脚本

新建process_port_list.sh文件,写入以下内容:

#!/bin/bash
# 参数校验
if [ $# -ne 1 ]; then
    echo "用法: $0 <待处理文件路径>"
    exit 1
fi
target_file="$1"
if [ ! -f "$target_file" ]; then
    echo "错误:文件 $target_file 不存在"
    exit 1
fi
# 执行处理逻辑
awk '/\./{prefix=$0;next} /tcp|udp/{gsub("/"," ");print prefix $0}' "$target_file"

给脚本加执行权限:
chmod +x process_port_list.sh
运行方式:
./process_port_list.sh file.txt

注:你给出的期望输出中dev.anothersite.co.uk:433 tcp为笔误,上述命令运行后会输出正确的dev.anothersite.co.uk:443 tcp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:36:03