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. 漂亮的自制java验证码

    网上有很多开源的验证码插件,例如jcaptcha,kaptcha等等...这些都不错,不过感觉用起来不太舒服,最后还是网上找了个原型的,然后在这个基础上修改下,效果还算不错,凑合用下,验证码要做到难以 ...

  2. 写了几年代码了,苦苦追寻,应该沉淀下来了,好好研究。net底层框架,以及较好的分层框架

    几年码农了.像沉淀下来.写一下自己的分层框架,尤其是逻辑层和orm层.数据訪问层.一切靠自己.网上一大堆框架,可是感觉各有优缺点.于是萌生了自己写适合自己的底层訪问框架?亲们,你们有适合自己的框架么?

  3. listview自定义背景以及item自定义背景

    item向自定义背景,可以根据position来设置不同的背景. listview背景设置是需要注意设置下面这几项: //点下时整个页面的背景 android:cacheColorHint=" ...

  4. NYOJ109 数列转换 【守恒法】

    数列转换 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 有一个数列a1,a2,a3...an,每次能够从中随意选三个相邻的数ai-1 ,ai , ai+1 ,进行例 ...

  5. Android ADB使用之详细篇

    Android开发环境中,ADB是我们进行Android开发经常要用的调试工具,它的使用当然是我们Android开发者必须要掌握的. ADB概述 Android Debug Bridge,Androi ...

  6. Java连接redis的使用演示样例

    Java连接redis的使用演示样例 Redis是开源的key-value存储工具,redis通经常使用来存储结构化的数据,由于redis的key能够包括String.hash.listset和sor ...

  7. java中的url 编码与解码

    什么是application/x-www-form-urlencoded字符串? 答:它是一种编码类型.当URL地址里包含非西欧字符的字符串时,系统会将这些字符转换成application/x-www ...

  8. 删除vector中的偶数元素,删除list中的奇数元素

    #include<vector> #include<list> #include<iostream> using namespace std; int main() ...

  9. EntityFramework小知识

    Entity Framework 应用程序有以下优点: 1 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性.复杂成员和关系的类型)来工作. 2 应用程序不再对特定的数据引擎或存储架构 ...

  10. ie6下子元素撑大父元素

    今天遇到了一个问题.在给a元素定义hover并且增大尺寸时,IE6下该元素会把父元素撑大,而非IE浏览器则是表现为溢出效果不会撑大父元素(我想要的效果).解决IE6的这个问题是采用了一个定位+负边距的 ...