Com o GNU awk
, você pode ditar a ordem na qual os arrays são percorridos, configurando sorted_in
em PROCINFO
. Nesse caso, defina-o como @val_str_asc
para forçar que as matrizes sejam percorridas em ordem crescente de valores.
Em seguida, divida a primeira linha em uma matriz a
Finalmente, para cada linha, percorra a matriz e imprima os campos correspondentes às chaves à medida que são recuperados.
awk -F'/' 'BEGIN{PROCINFO["sorted_in"]="@val_str_asc"};
FNR == 1{n = split($0, a)};
{x=0; for (k in a) printf "%s%s", $k, ++x == n? "\n": FS}' file
apple/banana/mango/orange
onion/potato/garlic/tomato
carpet/chair/window/table
Ou com python
from __future__ import print_function
with open('file') as f:
keys = next(f).rstrip('\n').split('/')
print(*sorted(keys), sep='/')
for line in f:
g = (m for l, m in sorted(zip(keys, line.rstrip('\n').split('/'))))
print(*g, sep='/')
apple/banana/mango/orange
onion/potato/garlic/tomato
carpet/chair/window/table