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

如何删除端口为1/1且MAC非aa:bb:cc:dd:ee:ff的文本行

处理方法

你需要保留的行满足两个条件之一即可:

  • 第二列端口号不是1/1
  • 端口号为1/1,但第一列MAC地址是aa:bb:cc:dd:ee:ff
    其余同时满足「端口为1/1、MAC不是指定值」的行直接删除即可,以下是几种常用的命令行实现方式:

awk 方案(优先推荐)

不改动原文件、结果输出到新文件的写法最安全,命令如下:

awk '$2!="1/1" || $1=="aa:bb:cc:dd:ee:ff"' 原文件路径 > 结果文件路径

如果要直接修改原文件(GNU awk支持),加原地修改参数即可:

awk -i inplace '$2!="1/1" || $1=="aa:bb:cc:dd:ee:ff"' 原文件路径

awk默认按空格分割列,$1对应MAC地址列,$2对应端口列,两个条件满足任意一个就打印当前行,逻辑简单不容易出错。用你给出的示例测试,处理后结果为:

aa:bb:cc:dd:ee:ff 1/1
ff:ee:dd:cc:bb:aa 1/2

sed 方案

用sed匹配删除的写法如下,结果输出到新文件:

sed '/ 1\/1$/ { /aa:bb:cc:dd:ee:ff/!d }' 原文件路径 > 结果文件路径

逻辑是先匹配所有以 1/1结尾的行,在这些行里如果找不到指定的MAC地址就执行删除,其他行全部保留。GNU sed要原地修改的话加-i参数即可。

grep 方案

通过反向匹配过滤掉要删除的行也能实现,需要grep支持PCRE正则:

grep -Pv '^(?!aa:bb:cc:dd:ee:ff\s).*\s1/1$' 原文件路径 > 结果文件路径

这个方法兼容性不如前两个,部分精简系统的grep没有-P参数,不推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:21:36