Perl 比较零数据的行和列

Perl 比较零数据的行和列,perl,sed,awk,Perl,Sed,Awk,我有一个包含以下数据的文件 文件1: 服务器计数器1:00 2:00 3:00 4:00 site1服务器停机15 0 3 500 site1服务器停机时间UC 15 0 3 500 ... 站点12服务器停机时间2 7 8 5 站点12服务器停机时间UC 2 7 8 5 ... site50服务器停机时间2 12 8 45 site50服务器停机时间UC 2 0 45 ... site57服务器停机时间212 8 45 site57服务器停机时间UC 2 0 0 每两条线用于同一场地。第一列

我有一个包含以下数据的文件

文件1:

服务器计数器1:00 2:00 3:00 4:00
site1服务器停机15 0 3 500
site1服务器停机时间UC 15 0 3 500
...
站点12服务器停机时间2 7 8 5
站点12服务器停机时间UC 2 7 8 5
...
site50服务器停机时间2 12 8 45
site50服务器停机时间UC 2 0 45
...
site57服务器停机时间212 8 45
site57服务器停机时间UC 2 0 0
每两条线用于同一场地。第一列是设备,第二列是问题,第三列可能包含与拉取时间相同数量的列。我在寻找一种方法,在时间数据下查找每两行中只包含一个零

解析数据后的输出:

site57服务器停机时间212 8 45
site57服务器停机时间UC 2 0 0
site1服务器停机15 0 3 500
site1服务器停机时间UC 15 0 3 500
site50服务器停机时间2 12 8 45
site50服务器停机时间UC 2 0 45
这可能适合您(GNU-sed):

这将获取一对以第一个字段为关键字的行,然后在第三个以后的字段中搜索
0
模式。

这可能适用于您(GNU-sed):

perl -ne '($k)=/^(\w+)/; if (/\b0\b/){ print $v{$k}, $_ }else{ $v{$k}=$_ }' file
这将获取一对以第一个字段为键的行,然后在第三个以后的字段中搜索
0
模式。

$awk'NR==1{next}!(NR%2){line1=$0;下一个}{$0=line1“\n”$0}/\/”文件
perl -ne '($k)=/^(\w+)/; if (/\b0\b/){ print $v{$k}, $_ }else{ $v{$k}=$_ }' file
site1服务器停机15 0 3 500 site1服务器停机时间UC 15 0 3 500 site50服务器停机时间2 12 8 45 site50服务器停机时间UC 2 0 45 site57服务器停机时间212 8 45 site57服务器停机时间UC 2 0 0
$awk'NR==1{next}!(NR%2){line1=$0;下一个}{$0=line1“\n”$0}/\/”文件
site1服务器停机15 0 3 500
site1服务器停机时间UC 15 0 3 500
site50服务器停机时间2 12 8 45
site50服务器停机时间UC 2 0 45
site57服务器停机时间212 8 45
site57服务器停机时间UC 2 0 0

只有一个零?输出中的第二行包含三个zeroscorrect我仍然希望其他列的数据,它们可以是一列或10+列的数字,但我最感兴趣的是带有一个零的行,它们也是成对的,所以即使其中一行只有0个数据,我也需要两行。每个文件的第一行是
“File1:…etc”
?wrt“single zero”-您不会显示任何带有“多个零”的输入。您是否真的试图找到数值零,而不是零作为非零数字的一部分出现的情况?“10”包含一个“单零”-要打印吗?只打印单零?输出中的第二行包含三个zeroscorrect我仍然希望其他列的数据,它们可以是一列或10+列的数字,但我最感兴趣的是带有一个零的行,它们也是成对的,所以即使其中一行只有0个数据,我也需要两行。每个文件的第一行是
“File1:…etc”
?wrt“single zero”-您不会显示任何带有“多个零”的输入。您是否真的试图找到数值零,而不是零作为非零数字的一部分出现的情况?“10”包含一个“单零”-是否要打印?
$ 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