通过参考特定行中的列对所有行进行水平排序

Sim*_*mdr 5 text-processing sort

我需要水平排序,而不是垂直排序,而且sort似乎是为垂直操作而设计的。q 例如,我有如下三行:

banana/orange/apple/mango
potato/tomato/onion/garlic
chair/table/carpet/window
Run Code Online (Sandbox Code Playgroud)

所有行都具有相同数量的列,以/.分隔。我希望列根据第 1 行中的字母顺序重新排列。所以它会变成:

apple/banana/mango/orange
onion/potato/garlic/tomato
carpet/chair/window/table
Run Code Online (Sandbox Code Playgroud)

这可能更好地可视化,如下所示:

?彩色列中的文本

即,就像电子表格中的按列排序。

ste*_*ver 2

我认为基本方法是

所以

perl -F'/' -alne '
   our @inds = sort { $F[$a] cmp $F[$b] } 0..$#F if $. == 1; 
   print join "/", @F[@inds]
' file
Run Code Online (Sandbox Code Playgroud)