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),随便写就是
  • 相关阅读:
    [Python 多线程] Concurrent (十五)
    [Python 多线程] GIL全局解释器锁 (十三)
    [Python 多线程] Semaphore、BounedeSemaphore (十二)
    自定义HandlerMethodArgumentResolver参数解析器和源码分析
    Dubbo分布式日志追踪
    kafka的分区分配策略
    深入剖析kafka架构内部原理
    kafka partition(分区)与 group
    Kafka消费组(consumer group)
    kafka存储机制以及offset
  • 原文地址:https://www.cnblogs.com/lein-wang/p/4305570.html
Copyright © 2011-2022 走看看