http://blog.sina.com.cn/s/blog_6d09b5750100x6zg.html

首先是shell排序实现多列排序,这里添加竖线以作分割,如下文件test:

a|gggg|4|7
b|fff2|3|2
c|gea0|6|12
d|kkkg|4|11
e|uity|6|4
f|fger|1|3
g|wabg|7|5
h|zhag|8|7
i|hang|3|3
j|lang|2|15
k|long|5|7
$cat test |sed 's/|/ /g' |sort -k3,3n -k4,4nr
当然这里可以不用将竖线去掉,直接用-t选项排序原文,需将竖线转义,用"\|":
$cat test |sort -t\| -k3,3n -k4,4nr
我们可以不用管道符号:
$sort -t\| -k3,3n -k4,4nr test
在文件中按列排序需要有间隔,所以用sed将文件中竖线"|"输出转换为空格,sort中"-k3,3n"是按第三列(key)和顺序排序(numeric-sort),"-k4,4nr"是按第四列逆序(reverse)输出,结果类似sql语句中的order by row3 ASC,row4 DESC,即优先对row1排序,在结果中,若row3相同,则在相同的基础上,对row4进行排序,这里第三、四列分别是升序和降序,结果为
f fger 1 3
j lang 2 15
i hang 3 3
b fff2 3 2
d kkkg 4 11
a gggg 4 7
k long 5 7
c gea0 6 12
e uity 6 4
g wabg 7 5
h zhag 8 7
其他排序
$cat test |sed 's/|/ /g' |sort -k3,3nr -k4,4nr
$cat test |sed 's/|/ /g' |sort -k3,3n -k4,4n
应该很容易分析吧
通过在程序中访问shell命令可获得文件内容(如php中用popen函数,结合fgets函数可获得数据,还可用explode进行分割得到数组,便可在web中访问),就如同从数据获得数据一样有了数据,可是数据库可通过limit lines1,lines2进行分页,那文件呢?
我们可以通过shell命令中的tail和head来完成,-n为指定显示行数,如下10行,+1为从第一行开始,如果没有"+"号,则为文件尾最后一行。这样就通过tail和head的结合实现分页呐,一个显示10行的首页:
$tail -n +1 |head -n 10
如第3页:
$tail -n +31 |head -n 10
至于每页显示多少(即命令中的10),随便写就是

转载 shell sort的更多相关文章

  1. [转帖]linux Shell sort按照指定列排序

    linux Shell sort按照指定列排序 https://blog.csdn.net/weixin_38308151/article/details/80760133 kubectl get p ...

  2. 希尔排序( Shell Sort)

    原文地址:http://www.stoimen.com/blog/,在此感谢作者! Insertion sort is a great algorithm, because it’s very int ...

  3. [算法] 希尔排序 Shell Sort

    希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它的基本思想是: ...

  4. - Shell - sort处理大文件(页 1) - ChinaUnix.net

    - Shell - sort处理大文件(页 1) - ChinaUnix.net sort处理大文件

  5. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

  6. 希尔排序Shell sort

    希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第一块希尔排序介绍 准备待排数组[6 2 4 1 ...

  7. 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-004希尔排序法(Shell Sort)

    一.介绍 1.希尔排序的思路:希尔排序是插入排序的改进.当输入的数据,顺序是很乱时,插入排序会产生大量的交换元素的操作,比如array[n]的最小的元素在最后,则要经过n-1次交换才能排到第一位,因为 ...

  8. 排序 —— 希尔排序(Shell sort)

    希尔排序(Shell sort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障(冒泡和插入排序,基于相邻元素的交换)的第一批算法.希尔排序改进了冒泡和插入排序的相邻元素才进行 ...

  9. 【算法】希尔排序(Shell Sort)(四)

    希尔排序(Shell Sort) 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩小增量排序. ...

随机推荐

  1. CAS Proxy 的相关文章

    cas代理模式的原理及配置 http://my.oschina.net/mashiguang/blog/69312 剖析CAS Proxy的设计原理 http://www.blogjava.net/s ...

  2. OpenVPN 如何记住用户名和密码

    最近在使用OpenVPN,但是没有记住用户名和密码功能,太坑人,研究一下发现是可以的. 1. 在OpenVPN安装目录下\OpenVPN\config文件夹中找到vpnserver.ovpn文件. 2 ...

  3. 笔记本禁用自带键盘攻略-------针对shift默认按下的解决方案

    长期以来楼主一直被一个问题困扰,就是win8进入界面,输密码时开大写其实是小写,开小写是大写.进入系统以后shift键是默认按下的.一直以为是电脑中毒了.上网查了一些东西,发现可能是因为键盘硬件方面的 ...

  4. android开发学习:打电话和发短信

    1.新建一个android项目 File--New--Other--android application project 填写application name(就是应用的名字.比方:天天酷跑) 填写 ...

  5. maven 把spring项目打包成可执行的文件

    转载自http://www.mamicod.e.com/info-detail-635726.html 最近需要解决Maven项目导入可执行的jar包的问题,如果项目不包含Spring,那么使用mvn ...

  6. LoadRunner测试问题

    1.关于Error -27791: Error -27790:Error -27740: 错误如下: Action.c(198): Error -27791: Server has shut down ...

  7. jemalloc源码结构分析(三):arena_malloc_small内存分布

    在arena_s结构中,由NBINS数组将bin按照不同规模等级分别存储,每一个等级对应一颗run树,即一颗以chunk_map_t为节点的红黑树,而这些chunk_map_t节点实际分布于各个chu ...

  8. java.lang.SecurityException: Permission denied (missing INTERNET permission?) 解决

    Android app里试图用HttpUrlConnection获取网络连接,忘记在AndroidManifest清单文件里声明需要用到Internet的权限,运行时报此错误. 解决方法 在Andro ...

  9. Linux shell之数组

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  10. 关于java实现同步的方法

    什么是线程同步? 当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题. 实现同步机制有两个方法: 1. 同步代码 ...