0

次のデータを含むファイルがあります。

ファイル1:

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 行は同じサイト用です。最初の列は機器、2 番目の列は問題、3 番目の列には引き出された時間の数の列を含めることができます。時間データを調べて、1 つのゼロのみを含む 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
4

3 に答える 3

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
于 2013-05-05T13:02:48.053 に答える
1
perl -ne '($k)=/^(\w+)/; if (/\b0\b/){ print $v{$k}, $_ }else{ $v{$k}=$_ }' file
于 2013-05-05T07:58:37.013 に答える