Транспонирование в оболочке — это заноза в заднице. Вот краткий ответ с Perl, для которого требуется Array ::Transpose ::Ragged из CPAN
perl -MArray::Transpose::Ragged=transpose_ragged -lnE '
if (/NA/) { $n++; next } # next row
push @{$data[$n]}, $_; # creating the 2D matrix of data
} END {
say join "\t", @$_ for transpose_ragged [grep {defined} @data];
' file
Вот еще один подход :конвейер до gawk
по сути такой же, как ответ @n.caillou, код awk выполняет транспонирование
paste -sd " " file | sed 's/NA/\n/g' | sed '/^ *$/d' | gawk '
{
for (i=1; i<=NF; i++) data[FNR][i] = $i
if (NF > max) max = NF
}
END {
for (i=1; i<=max; i++) {
for (j=1; j<=NR; j++) printf "%s\t", data[j][i]
print ""
}
}
'
Использует GNU awk для многомерных -массивов
Хорошо, на самом деле в Linux это довольно просто. Linux позволяет сразу же предоставлять ответы на приглашения vncpasswd:
$ printf "МОЙ ПАРОЛЬ\nМОЙ ПАРОЛЬ\n\n" | vncpasswd