Chinaunix
标题:
awk同一记录内排序的问题
[打印本页]
作者:
aluoyeshi
时间:
2010-06-18 22:16
标题:
awk同一记录内排序的问题
#echo "df 4 6 9 0" |awk '{for(i=2;i<=NF;i++)a[i]=$i;asort(a);for(i=2;i<=length(a);i++)printf a[i]" ";printf "\n"}'
4 6 9
想要的结果是:
0 4 6 9
是不是asort有问题?
求推荐其他更好的排序方法...
作者:
aluoyeshi
时间:
2010-06-18 22:31
知道问题在哪了
改成
#echo "df 4 6 9 0" |awk '{for(i=2;i<=NF;i++)a
=$i;asort(a);for(i=
1
;i<=length(a);i++)printf a
" ";printf "\n"}'
0 4 6 9
作者:
Shell_HAT
时间:
2010-06-18 22:34
awk冒泡排序
http://bbs.chinaunix.net/thread-1391904-1-3.html
awk快速排序
http://bbs.chinaunix.net/thread-736994-1-3.html
作者:
aluoyeshi
时间:
2010-06-18 22:40
回复
3#
Shell_HAT
谢谢
不过我发现我的方法还是有问题的
比如说文件:
#cat file
possible: 0 3 6 9
possible: 0 3 7 7
possible: 0 3 9 6
possible: 0 4 6 7
possible: 0 4 7 5
possible: 0 4 9 4
possible: 0 6 6 6
possible: 0 6 7 4
possible: 0 6 9 3
possible: 0 4 4 9
possible: 0 4 5 7
possible: 0 4 7 6
#cat file | awk '{for(i=2;i<=NF;i++)a
=$i;asort(a);for(i=1;i<=length(a);i++) printf a
" ";printf "\n"}'
0 3 6 9
0 0 3 7 7
0 0 3 6 9
0 0 4 6 7
0 0 4 5 7
0 0 4 4 9
0 0 6 6 6
0 0 4 6 7
0 0 3 6 9
0 0 4 4 9
0 0 4 5 7
0 0 4 6 7
为什么会出现不一样的结果?
作者:
bbgg1983
时间:
2010-06-18 22:49
-F '[ :]'
作者:
aluoyeshi
时间:
2010-06-18 22:53
cat file |awk '{for(i=2;i<=NF;i++)a[i]=$i;asort(a,b);for(j=1;j<=length(b);j++)printf b[j]" ";printf "\n"}'
这样就可以了
作者:
Shell_HAT
时间:
2010-06-18 22:56
回复
4#
aluoyeshi
printf "\n";delete a}
作者:
bbgg1983
时间:
2010-06-18 23:03
suntao@suntao-linux:~$ cat b
possible: 0 3 6 9
possible: 0 3 7 7
possible: 0 3 9 6
possible: 0 4 6 7
possible: 0 4 7 5
possible: 0 4 9 4
possible: 0 6 6 6
possible: 0 6 7 4
possible: 0 6 9 3
possible: 0 4 4 9
possible: 0 4 5 7
possible: 0 4 7 6
suntao@suntao-linux:~$ awk '{for(i=2;i<=NF;i++)a[i]=$i;j=asort(a);print j}' b
4
5
5
5
5
5
5
5
5
5
5
5
复制代码
第一列的asort的返回值为什么是4呢
作者:
aluoyeshi
时间:
2010-06-18 23:18
回复
7#
Shell_HAT
是可以的
作者:
aluoyeshi
时间:
2010-06-18 23:20
回复
8#
bbgg1983
同样困惑...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2