zoukankan      html  css  js  c++  java
  • 转载 shell sort

    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),随便写就是
  • 相关阅读:
    优先队列(堆)
    从CPU管理到进程的引入
    倾听程序员
    数据库设计
    数据库设计之数据库,数据表和字段等的命名总结
    Set容器--HashSet集合
    Java Collection开发技巧
    关于事务
    关于触发器
    windows phone(成语典籍游戏开发)
  • 原文地址:https://www.cnblogs.com/lein-wang/p/4305570.html
Copyright © 2011-2022 走看看