#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11130900 use warnings; local $_ = < { "result.stdout_lines": [ "SOURCE FSTYPE SIZE USED AVAIL USE% TARGET", "kmhpemcfspa21:/oracle_depot nfs 130.1G 77.2G 52.9G 59% /export/oracle", "kmhpemcfspa21:/oracle_dump nfs 11.5T 1.8T 9.7T 16% /export/oracle_dump" ] } ok: [otherhost] => { "result.stdout_lines": [ "SOURCE FSTYPE SIZE USED AVAIL USE% TARGET", "kmhpemcfspa21:/oracle_dump nfs 11.5T 1.8T 9.7T 16% /export/oracle_dump" ] } ok: [thirdhost] => { "result.stdout_lines": [ "SOURCE FSTYPE SIZE USED AVAIL USE% TARGET", "kmhpemcfspa21:/oracle_other nfs 11.5T 1.8T 9.7T 16% /export/oracle_dump" "kmhpemcfspa21:/oracle_depot nfs 130.1G 77.2G 52.9G 59% /export/oracle", ] } END my %hostspershare; while( /"(\S+)\s+nfs\s/g ) { my $share = $1; $` =~ /.*ok: \[(\S+?)\]/s and push @{ $hostspershare{$share} }, $1; } use Data::Dump 'dd'; dd \%hostspershare; #### { "kmhpemcfspa21:/oracle_depot" => ["cgva1lbpmor001m", "thirdhost"], "kmhpemcfspa21:/oracle_dump" => ["cgva1lbpmor001m", "otherhost"], "kmhpemcfspa21:/oracle_other" => ["thirdhost"], }