我有一个看起来像这样的文件
12;6
2;4
9;4
...
在这种情况下,字段(列)分隔符是“;”。我想对每行中的字段进行排序。可接受的输出是:
6;12
2;4
4;9
可接受的解决方案可以假设字段定界符是“;”值是整数。理想的解决方案更灵活,允许使用不同的分隔符和字母数字排序。
这一切都需要在命令行上完成。
答案 0 :(得分: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
答案 1 :(得分: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