2014-02-20 42 views
0

我是新手脚本,我需要一只手Bash比较文件中的随机行并输出消息

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

我需要做的是比较这两个文件和打印消息

文件1

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 

第一列是数据库的名称,第二个是最大连接数,第三个是minimun连接的数量,第四是在服务器和第五的主机名是ip

因此,目标匹配第一个文件的IP与第二个文件的任何条目匹配,并且当它们匹配时比较数据库的连接数量是否在最大值和最小值之间,以及打印一条消息,如果他们没事或者他们不好。 另外,如果有一个ip不匹配在任何一个文件打印另一条消息

这是可能的,有人可以给我一个这方面的手或至少指向我的解决方案??!

在此先感谢!

+0

您可能还想查看这个http://www.tldp.org/LDP/abs/html/ – zee

回答

1

您可以使用此:

$ 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的第二个文件循环与该特定服务器对应的编号。

+0

特赦,你能介绍一下学习'awk'的最佳途径吗? – MLSC

+0

http://www.tldp.org/LDP/abs/html/awk.html – zee

+0

你好,感谢您的提示,但将这项工作,如果例如而不是3或4行我有10或12在第一个文件? –