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

如何清晰识别网络物理设备与仿真设备命令输出的细微差异?

针对超长行单字符差异的比对优化方案

方案1:使用git diff的按词比对能力(最推荐,适配你的场景)

git自带的diff工具支持按自定义粒度做差异比对,刚好适配你这种逗号分隔的长规则行场景:

  • 要终端高亮显示差异时使用如下命令,差异部分会直接标红标绿:
git diff --no-index --word-diff=color --word-diff-regex='[^,]+' /tmp/offline_output /tmp/online_output
  • 要写入日志文件无颜色格式时,使用plain格式输出,差异会用[-删除内容-]和{+新增内容+}明确标记:
git diff --no-index --word-diff=plain --word-diff-regex='[^,]+' /tmp/offline_output /tmp/online_output >> failure_log

以你给出的dec_ttl差异为例,输出会直接标记为actions=dec_ttl[-()-]或者actions=dec_ttl{+()+},不需要在长行里逐字符查找。

方案2:无git环境时使用wdiff工具

wdiff是专门按词做差异比对的工具,无需依赖git:

  • 安装后执行如下命令,差异内容会用特殊括号标记:
wdiff /tmp/offline_output /tmp/online_output >> failure_log
  • 终端查看时可以搭配colordiff实现高亮:
wdiff /tmp/offline_output /tmp/online_output | colordiff

方案3:预处理拆分长行后比对(适配网络设备规则输出专属方案)

你的输出行都是逗号分隔的键值对格式,可以先把每个逗号替换为逗号+换行,让每个配置项单独占一行,再用普通diff比对,差异项会单独成行显示,完全规避长行查找问题:

# 预处理拆分文件
sed 's/,/,\n/g' /tmp/offline_output > /tmp/offline_split
sed 's/,/,\n/g' /tmp/online_output > /tmp/online_split
# 比对拆分后的文件
diff -c /tmp/offline_split /tmp/online_split >> failure_log

优化后的脚本示例

你可以直接把原脚本中的diff -c替换为对应的方案命令即可,比如用git diff plain版本的修改后脚本:

diff -q /tmp/offline_output /tmp/online_output 1>/dev/null
if [[ $? == "0" ]]; then
    echo "PASSED: $cmd"
else
    echo "FAILED: $cmd"
    echo "---------------------------------" >> failure_log
    echo "FAILURE: $cmd " >> failure_log
    git diff --no-index --word-diff=plain --word-diff-regex='[^,]+' /tmp/offline_output /tmp/online_output >> failure_log
    echo "" >> failure_log
    echo "" >> failure_log
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:18:03