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

使用Linux Shell处理CSV网络状态日志,去除连续重复状态

处理连续重复状态的Shell脚本方案

先看看你的原始日志内容:

2018-04-27,23:37,OK
2018-04-27,23:38,OK
2018-04-27,23:39,OK
2018-04-27,23:40,ERROR
2018-04-27,23:41,ERROR
2018-04-27,23:42,OK
2018-04-27,23:43,OK
2018-04-27,23:44,OK
2018-04-27,23:45,OK

要去除连续重复的状态值(只保留状态切换的第一行),用awk是最直接高效的方案,因为它能轻松按列处理CSV数据:

awk -F ',' '$3 != prev {print; prev=$3}' log.csv

命令解释:

  • -F ',':告诉awk用逗号作为列分隔符,这样$3就对应第三列的状态值(OK/ERROR)
  • $3 != prev:只当当前行的状态和上一行记录的状态不一样时,才执行后续动作
  • print:输出当前行(也就是状态切换的起始行)
  • prev=$3:更新prev变量为当前行的状态,供下一行对比使用

执行后你会得到精简后的日志:

2018-04-27,23:37,OK
2018-04-27,23:40,ERROR
2018-04-27,23:42,OK

如果需要把结果保存到新文件,直接重定向输出即可:

awk -F ',' '$3 != prev {print; prev=$3}' log.csv > cleaned_log.csv

补充说明:

有人可能会想到用uniq,但uniq默认是整行去重,而我们只需要基于第三列去重连续项。如果非要用uniq,得先对第三列做处理,但这样会打乱原始日志的时间顺序(因为需要先排序),所以awk方案是最优选择,它能完美保留日志的时间顺序,只处理连续重复的状态。

内容的提问来源于stack exchange,提问作者Sopalajo de Arrierez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:13:43