2013-05-05 53 views
0

我有一個包含以下數據的文件。比較零數據的行和列

File1中:

Server counter   1:00 2:00 3:00 4:00 
site1 serverdowntime 15  0  3  500 
site1 serverdowntimesuc 15  0  3  500 

... 

site12 serverdowntime 2  7  8  5 
site12 serverdowntimesuc 2  7  8  5 

... 

site50 serverdowntime 2  12  8  45 
site50 serverdowntimesuc 2  0  0  45 

... 

site57 serverdowntime 2  12  8  45 
site57 serverdowntimesuc 2  0  0  0 

每2行是相同的位點。第一列是設備,第二列是問題,第三列可以包含拉動小時數的列數。我正在尋找一種方式來查看時間數據,並找到每兩行只包含單個零。

分析數據後

輸出:

site57 serverdowntime 2  12  8  45 
site57 serverdowntimesuc 2  0  0  0 
site1 serverdowntime 15 0  3  500 
site1 serverdowntimesuc 15 0  3 500 
site50 serverdowntime 2  12  8  45 
site50 serverdowntimesuc 2  0  0  45 
+0

唯一的單爲零?你的輸出中的第二行包含三個零 – gaussblurinc 2013-05-05 06:53:17

+0

正確的我仍然會喜歡來自其餘列的數據,它們可以少至一列或10列以上的數字,但帶有單個零的行是我最感興趣的內容 – GenericUser 2013-05-05 06:56:53

+0

它們也是成對的,所以即使只有一行中只有0個數據,我也需要這兩行。 – GenericUser 2013-05-05 07:00:29

回答

1

這可能會爲你工作(GNU SED):

sed -r '$!N;/^(\S+)\s.*\n\1/!D;/(^|\n)(\S+\s+){2}[^\n]*\s0(\s+|\n|$)/p;d' file 

這得到一對與第一場爲重點線,然後搜索了0模式在第3個起始字段中。

1
perl -ne '($k)=/^(\w+)/; if (/\b0\b/){ print $v{$k}, $_ }else{ $v{$k}=$_ }' file 
2
$ awk 'NR==1{next} !(NR%2){line1=$0;next} {$0=line1"\n"$0} /\<0\>/' file 
site1 serverdowntime 15 0  3  500 
site1 serverdowntimesuc 15 0  3 500 
site50 serverdowntime 2  12  8  45 
site50 serverdowntimesuc 2  0  0  45 
site57 serverdowntime 2  12  8  45 
site57 serverdowntimesuc 2  0  0  0