0

我有一个看起来像这样的文件

12;6
2;4
9;4
...

在这种情况下,字段(列)分隔符是“;”。我想对每一行中的字段进行排序。可接受的输出是:

6;12
2;4
4;9

可接受的解决方案可以假设字段分隔符是“;” 并且值是整数。理想的解决方案更灵活,允许使用不同的分隔符并用于字母数字排序。

这一切都需要在命令行上完成。

4

2 回答 2

3
perl -wne '$,=";"; chop; 
    print sort { $a <=> $b } split ";";
    print "\n"' input

如果您的 perl 不是古老的:

perl -wnE '$,=";"; chop; 
        say sort { $a <=> $b } split ";"' input

你也可以这样做:

perl -F\; -wanE 'chop $F[-1]; $,=";"; say sort { $a <=> $b } @F' input
于 2012-10-07T12:48:13.213 回答
2
 awk 'BEGIN{FS=OFS=";"}{if($1>$2)print $2,$1;else print $1,$2;}' file

测试

kent$  cat t.txt
12;6
2;4
9;4
ccc;aaa
bab;baa

kent$  awk 'BEGIN{FS=OFS=";"}{if($1>$2)print $2,$1;else print $1,$2;}' t.txt
6;12
2;4
4;9
aaa;ccc
baa;bab
于 2012-10-07T12:44:00.930 回答