我有一个包含以下数据的文件。
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
每两行用于同一站点。第一列是设备,第二列是问题,第三列可以包含尽可能多的列数。我正在寻找一种方法来查看时间数据,并找到每两行只包含单个零。
解析数据后的输出:
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 :(得分: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
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -r '$!N;/^(\S+)\s.*\n\1/!D;/(^|\n)(\S+\s+){2}[^\n]*\s0(\s+|\n|$)/p;d' file
这会获得一对第一个字段作为键的行,然后在第3个字段中搜索0
模式。
答案 2 :(得分:1)
perl -ne '($k)=/^(\w+)/; if (/\b0\b/){ print $v{$k}, $_ }else{ $v{$k}=$_ }' file