2014-02-20 70 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在第一個文件? –