如何基于完整chrome-extension ID模式删除日志文件中的重复行
解决方案
你可以直接用awk实现需求,两种方案可选:
方案1(字段位置固定时使用,执行效率最高)
你的日志结构固定,完整Chrome扩展ID是每行的倒数第二个字段,直接用以下命令:
awk '!seen[$(NF-1)]++' 你的原日志文件路径
- 逻辑说明:
NF表示当前行总字段数,$(NF-1)取倒数第二个字段也就是完整扩展ID,关联数组seen记录ID出现次数,仅首次遇到ID时打印对应行,自动跳过后续重复ID的行,默认保留首次出现的行。
方案2(字段位置不固定时使用,兼容性更强)
如果日志后续可能调整字段顺序,可通过匹配最长的chrome-extension://前缀内容作为去重依据:
awk '{ max_len = 0 dedup_key = "" for(i=1;i<=NF;i++) { if ($i ~ /^chrome-extension:\/\// && length($i) > max_len) { max_len = length($i) dedup_key = $i } } if (dedup_key != "" && !seen[dedup_key]++) print }' 你的原日志文件路径
结果保存
如果需要把去重后的结果保存为新文件,在命令末尾加重定向即可:
# 以方案1为例,方案2同理 awk '!seen[$(NF-1)]++' original.log > deduplicated.log
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

