mysql - shell比较两个“字符串-数字”文件

 mobiledu2502876483 发布于 2022-11-05 14:07

问题简化后描述如下:
已知两个文件file1.txt和file2.txt内容如下:

file1.txt
database1:table1    5
database1:table2    10
database1:table3    100
database2:table3    45

file2.txt
database1:table1    19
database1:table2    24
database1:table3    100
database2:table3    20

然后我的问题是,对比两个文件中第一列字符串相同的数据,比较对应的第二列数值是否都不为0,或者一个为0,或者都为0。
上面的例子是最简单的情况,这种情况下file1.txt和file2.txt中每一行内容都是对应的,只是数值可能不同。
复杂的情况有file1.txt和file2.txt中第一列不完全相同,存在某些字符串在file1.txt中而不在file2.txt中,也存在某些字符串在file2.txt而不在file1.txt中。


需要解决的问题描述如下:
对数据库某些核心表进行监控,监控表内数据行数的状态:非空->空。

需要监控的表记录在一个配置文件内,crontab每隔一段时间去读取配置文件,得到需要监控的表,然后获取表中的数据行数。每次获取了具体的每个表的数据行数后,跟上一次的数据进行比较,当发现数据出现“非空->空”状态的变换,则NOC告警。

这里面的问题是:crontab不同时间读取的配置文件可能不同(存在两个时间间隔之间,有人修改配置文件的情况)。

2 个回答
  • 用python,perl等语言吧,将两个file的第一列和第二列存成dict(hash)类型,然后就可以进行对比了

    2022-11-10 00:25 回答
  • 假设你第一个域里不含空白字符:

    join file1.txt file2.txt | awk '{if($2 != 0 && $3 == 0){print}}'
    
    2022-11-10 00:26 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有