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)
这可能更好地可视化,如下所示:
即,就像电子表格中的按列排序。
我认为基本方法是
创建一个索引列表,按第一行的顺序排序 - 例如,如下所述:How to return a Sorted list's index in Perl?
使用列表对行进行切片
所以
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)
| 归档时间: |
|
| 查看次数: |
1019 次 |
| 最近记录: |