#!/bin/bash

declare -A DATA
declare -i LENGTH

[[ -n $1 && $1 != "-" ]] && { exec <"$1" || exit; }

# read input
IFS=$'\t'
while read name line; do
	declare -a values
	read -a values < <(echo "$line")

	len=${#values[@]}
	[[ $LENGTH -lt $len ]] && LENGTH=$len

	DATA[$name]="${values[@]}"
	unset values
done
unset IFS

# echo headers
for key in "${!DATA[@]}"; do
	echo -ne "$key\t"
done
echo

# echo values
for ((i=0; i < $LENGTH; i++)); do
	for key in "${!DATA[@]}"; do
		declare -a values
		read -a values < <(echo "${DATA[$key]}")

		echo -ne "${values[$i]}\t"
		unset values
	done
	echo
done
