2013-06-06 126 views
0

如何在awk中对数组进行排序?考虑 “sortNum.awk”:在awk中对数组进行排序

{ 
    split($0,a," ") 
    for (i in a) print a[i] 
    print "####" 
    asort(a) 
    for (i in a) print a[i] 
} 

echo "4 3 2 1" | awk -f sortNum.awk运行提供了

1 
4 
3 
2 
#### 
4 
1 
2 
3 

我使用了GNU AWK版本3.1.8。

+1

如果你想让它工作而不关心'awk',这是Perl单线程:'echo“4 3 2 1”| | perl -e“print join”,sort split'\ s',<>“' – mvp

回答

4

for (i in a)不选择数字顺序索引,你需要做的是明确的。

{ 
    n = split($0,a," "); 
    for (i = 1; i <= n; i++) print a[i]; 
    print "####" 
    asort(a) 
    for (i = 1; i <= n; i++) print a[i]; 
} 
+0

非常感谢!这似乎工作:) –