source data
[/tmp/test]# more tt1
50 IT China 800
10 ACCOUNTING LA 1100
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
10 DEVELOPER HOSTON 1300
1.按照第二列排序
[/tmp/test]# sort -t ' ' -k2 tt1
10 ACCOUNTING LA 1100
10 DEVELOPER HOSTON 1300
50 IT China 800
40 OPERATIONS BOSTON 5500
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
2.按照第四列降序排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -nrk4 | awk '{printf "%-4s%-20s%-10s%-5s\n",$1,$2,$3,$4}'
40 OPERATIONS BOSTON 5500
30 SALES CHICAGO 2800
10 DEVELOPER HOSTON 1300
10 ACCOUNTING LA 1100
50 IT China 800
20 RESEARCH DALLAS 560
3,按照第一列升序,第四列降序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -n -k1 -k4,4nr | awk '{printf "%-4s%-20s%-10s%-5s\n",$1,$2,$3,$4}'
10 DEVELOPER HOSTON 1300
10 ACCOUNTING LA 1100
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
50 IT China 800
4.按第四列的第二个字符之后的数字排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -t ' ' -nk4.2 | awk '{printf "%-4s%-15s%-10s%-5s\n",$1,$2,$3,$4}' --需要加上 -t ' ',不加上不行,郁闷
50 IT China 800
20 RESEARCH DALLAS 560
10 ACCOUNTING LA 1100
10 DEVELOPER HOSTON 1300
40 OPERATIONS BOSTON 5500
30 SALES CHICAGO 2800
5.按第二列的第二个字母排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -t ' ' -k2.2,2.2 | awk '{printf "%-4s%-15s%-10s%-6s\n",$1,$2,$3,$4}' --需要加上 -t ' ',不加上不行,郁闷
30 SALES CHICAGO 2800
10 ACCOUNTING LA 1100
10 DEVELOPER HOSTON 1300
20 RESEARCH DALLAS 560
40 OPERATIONS BOSTON 5500
50 IT China 800
sort还有很多其他的选项,如果需要查看具体的使用信息使用 man sort查看
[/tmp/test]# more tt1
50 IT China 800
10 ACCOUNTING LA 1100
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
10 DEVELOPER HOSTON 1300
1.按照第二列排序
[/tmp/test]# sort -t ' ' -k2 tt1
10 ACCOUNTING LA 1100
10 DEVELOPER HOSTON 1300
50 IT China 800
40 OPERATIONS BOSTON 5500
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
2.按照第四列降序排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -nrk4 | awk '{printf "%-4s%-20s%-10s%-5s\n",$1,$2,$3,$4}'
40 OPERATIONS BOSTON 5500
30 SALES CHICAGO 2800
10 DEVELOPER HOSTON 1300
10 ACCOUNTING LA 1100
50 IT China 800
20 RESEARCH DALLAS 560
3,按照第一列升序,第四列降序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -n -k1 -k4,4nr | awk '{printf "%-4s%-20s%-10s%-5s\n",$1,$2,$3,$4}'
10 DEVELOPER HOSTON 1300
10 ACCOUNTING LA 1100
20 RESEARCH DALLAS 560
30 SALES CHICAGO 2800
40 OPERATIONS BOSTON 5500
50 IT China 800
4.按第四列的第二个字符之后的数字排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -t ' ' -nk4.2 | awk '{printf "%-4s%-15s%-10s%-5s\n",$1,$2,$3,$4}' --需要加上 -t ' ',不加上不行,郁闷
50 IT China 800
20 RESEARCH DALLAS 560
10 ACCOUNTING LA 1100
10 DEVELOPER HOSTON 1300
40 OPERATIONS BOSTON 5500
30 SALES CHICAGO 2800
5.按第二列的第二个字母排序
[/tmp/test]# cat tt1 | awk '{print $1,$2,$3,$4}' | sort -t ' ' -k2.2,2.2 | awk '{printf "%-4s%-15s%-10s%-6s\n",$1,$2,$3,$4}' --需要加上 -t ' ',不加上不行,郁闷
30 SALES CHICAGO 2800
10 ACCOUNTING LA 1100
10 DEVELOPER HOSTON 1300
20 RESEARCH DALLAS 560
40 OPERATIONS BOSTON 5500
50 IT China 800
sort还有很多其他的选项,如果需要查看具体的使用信息使用 man sort查看
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24237320/viewspace-2060704/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24237320/viewspace-2060704/