cat test.txt | perl -ne '($key,$value)=/(servername |serverip: )(.*)/;if($key eq "servername "){$data->{$value}=[] unless exists $data->{$key};$last_servername=$value;};if($key eq "serverip: "){push @{$data->{$last_servername}}, $value};END{printf "%s,%s\n",$_,join ",",@{$data->{$_}} for keys %$data;}' #### def,456,445566 abc,123 ghi,789