$ids = `head -1 dataset1`; @matchid = split(" ", $ids); shift(@matchid); open(IN, "dataset2" ) || die open(OUT, ">mergeddataset") || die ; $line=; chomp $line; $h = `cut -f1 dataset1`; @header = split(/\n/,$h); shift(@header); print OUT $line." ".join(" ",@header)."\n"; while ($line=) { chomp $line; @match=split(" ",$line); foreach $id (@header) { if ($id eq $match[1]) { $column=`head -1 dataset1|tr -s "\t" "\n" | grep -n $id|cut -f1 -d":"`; chomp $column; $a = `cut -f$column dataset1| tail +2 | tr -s '\n' ' '`; chomp $a; @b = split(/ +/, $a); print OUT $line." ".join(" ",@b)."\n"; } } } close(OUT); close(IN);