Bash比较文件中的随机行并输出消息



我是脚本新手,我需要帮助这个

我有两份文件。在第一个例子中,我有一系列的ip和数据库连接的数量,在另一个例子中我解析了打印数据库名称、最大和最小连接、数据库服务器的主机名和ip的数据源的配置

我需要的是比较这两个文件并打印一条消息

File1

1.2.3.4 1
1.2.3.5 6
1.2.3.6 1
1.2.3.7 1
1.2.3.8 7

第一列是ip,第二列是同时连接到数据库的数量

文件2

DB1 50 5      server1.domain.com 1.2.3.5
DB2 50 5    server2.domain.com 1.2.3.8
DB3 15 5      server3.domain.com 1.2.3.9
DB4 10 1    server4.domain.com 1.2.3.4
DB5 10 1       server5.domain.com 1.2.3.6

第一列是数据库的名称,第二列是最大连接数,第三列是最小连接数,第一列是服务器的主机名,第五列是ip

因此,目标是将第一个文件的ip与第二个文件的任何条目匹配,当它们匹配时,比较数据库的连接数是否在最大值和最小值之间,如果它们正常或不正常,则打印一条消息。此外,如果两个文件中都有不匹配的ip,则打印另一条消息

这有可能吗?有人能帮我一把吗?或者至少给我指一下解决方案吗??!

提前感谢!!

您可以使用这个:

$ awk 'NR==FNR {a[$1]=$2; next} $5=a[$5]' file1 file2
DB1 50 5 server1.domain.com 6
DB2 50 5 server2.domain.com 7
DB4 10 1 server4.domain.com 1
DB5 10 1 server5.domain.com 1

它将值存储在具有a[ip]=num_connections数组的第一个文件中。然后,它循环通过第二个文件,将IP替换为与该特定服务器对应的号码。

相关内容

  • 没有找到相关文章

最新更新