2013-06-05 35 views
0

要分開不同的價值觀,使他們的變量:如何區分不同的價值觀,使他們變量

db2 
Attempting to contact (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=server1)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=db2))) OK (0 msec) 
db1 
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL= TCP)(Host= 10.1.1.1)(Port= 1521)) (CONNECT_DATA = (SERVICE_NAME =db1))) TNS-12541: TNS:no listener 
xdb3 
TNS-03505: Failed to resolve name 

也行重命名爲有效,而當得到任何不同的結果,以獲取無效像大小寫爲「TNS:no listener」或「TNS-03505:無法解析名稱」,並在其後添加未知字符串,因爲沒有附加數據。

預期查看:

db2,active,server1 
db1,inactive,10.1.1.1 
xdb3,inactive,unknown 
+0

那麼,你嘗試過什麼?你卡在哪裏?只是要求別人從頭開始你的工作並不好。 :( – ams

+0

所以我執行這個命令: 'DB =「xdb3 db1 db2」; for $ in $ DB; do echo $ x; tnsping $ x | awk'{a [NR%2] = $ 0} END {for i = NR + 1; i <= NR + 2; i ++)打印[i%2]}'| sed'/^$/d'| sed':a; N; $!ba; s/\ n// g'; done' 但是堅持讓這個結果變成逗號分隔的變量... –

+0

解決方案不適合你嗎? –

回答

3
perl -ne 'chomp;push @r,$_}{ ($m)=$r[$_] =~ /host=\s*([^)]+)/i, print ("$r[$_-1],", $m? "active,$m\n":"inactive\n") for grep $_%2, 0..$#r;' logfile 

修改後的版本,

perl -ne 'chomp; if($. % 2){print "$_,";next;} ($m)=/host=\s*([^)]+)/i; print ((/\bOK\b/ ? "active," :"inactive,"), $m||"unknown","\n")' logfile 
+0

再次感謝和意見,下次將創建新的職位 得到一些錯誤: 未定義的子程序&main ::稱爲-e行1,<>行2. –

+0

我明白了:無法識別的開關:-E(-h將顯示有效的選項)。 –

+0

是的,我用perl 5.8.8,但現在拿到輸出: 'DB2, 活躍, DB1, 不活躍, xdb3, 不活躍,'後,每列一切都是新行。 –

2

如果您已經使用perl的,我建議是這樣的:

#!/usr/bin/perl 

use strict; use warnings; 

my $name; 
while (<DATA>) { 
    if ($. % 2) { chomp; ($name = $_)=~ s/\s+$//; next; } 
    if (/HOST=([^)]+)/i) { print "$name,active,$1\n"; 
    } else { print "$name,inactive\n"; 
    } 
} 

__DATA__ 
db2  
Attempting to contact (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=server1)(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=db2))) OK (0 msec) 
db1  
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL= TCP)(Host= 10.1.1.1)(Port= 1521)) (CONNECT_DATA = (SERVICE_NAME = db1))) OK (0 msec) 
xdb3 
TNS-03505: Failed to resolve name 

輸出:

db2,active,server1 
db1,active, 10.1.1.1 
xdb3,inactive 

當然,你應該使用輸入文件,而不是DATA文件句柄。

相關問題