前言
排序是大家写代码最长遇见的问题,稍微有基础的在短时间内都能写出快排,归并,插入,堆排等各种排序算法,但是linux平时操作,让你分析日志,你不可能对在shell脚本里现写一个排序算法,这时awk+sort的作用就体现出来了,用awk主要是获取所需的字段(ps:这里不做详细解释),然后管道给sort进行排序
材料
创建示例文件的脚本:
#!/bin/bash
fruits=(a b c d e f g h i j k l m n o p q i s t u v w x y z)
arrlen=${#fruits[*]}
len=5
file="/home/wzy/test/sort.txt"
for i in `seq 1 50`
do
ip=192.168.1.$i
name=""
for ((j=0;j<$len;j++))
do
offset=`expr $RANDOM % $arrlen`
name=$name${fruits[$offset]}
done
str=$i" "$ip" "$name
echo $str >> $file
done
示例文件截图:
sort使用
sort的基本工作原理:
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,也就是c中的strcmp函数,最后将他们升序输出
sort的-u(--unique)选项
它的作用很简单,就是在输出行中去除重复行
sort的-r(--reverse)选项
sort默认的排序方式是升序,如果想改成降序,加上-r选项即可
sort的-n(--numberic-sort)选项
默认情况下,如果按照strcpy排序,会出现10小于2的情况,懂strcpy比较机制也就不需要我多解释了,不懂的自己去google吧,例如当我们按照第一个字段来排序时,会出现如下情况:
如果我们想就是按照数字大小进行排序,则需要告诉sort,因此需要-n参数
sort的-t(--field-separator)选项和-k(--key)选项
刚才对于sort.txt处理,我们是用awk来获取所需字段,其实sort本身提供了这个功能,用-t参数来指定字段分隔符,用-k指定第几个字段,但是我更喜欢awk,因为awk更方便做一些预处理工作
后记
工作中掌握一点linux的奇技淫巧还是很方便的!
分享到:
相关推荐
本文档详细的介绍了linux下sort命令的详细用法
linux下uniq和sort命令用法详解.docx
linux下uniq和sort命令用法.docx
LINUX处理文本命令 处理文本和文本文件的命令 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的... 这个命令经常出现在sort命令的管道后边. 四. expand, unexpand ... ...
linux sort命令参数及用法详解.docx
具体命令:DIR(my_ls), RD(my_rd),CD,MD(my_md), DEL,MOVE(my_move),REN(my_ren),XCOPY, PROMPT,SORT(sort),TYPE(my_type),COPY(my_copy),命令格式可参照 Windows 的 CMD.EXE 或 MS-DOS 提供的命令; 设计命令的...
目标:为Windows操作系统建立一个兼容Unix命令的命令接口,实现命令包括ls,cat,cp,mv,md,rd,cd,sort,more命令。 环境:使用CodeBlock开发(g++编译) 效果:尚未发现BUG 优点:代码可读性高、比较精简、错误处理...
对使用linux的新手来说,是linux一些常用命令的一些合集,有兴趣的朋友可以看一下 1、awk详解.txt 2、crontab定时器.txt 3、sed详解.txt 4、sort-cut-wc详解.txt
Linux网络操作系统基础:文件处理wc、sort和diff命令.pptx
sort命令的k选项大讨论,最详细的Sort命令介绍。
今天小编就为大家分享一篇关于一道题理解Linux中sort命令的多个参数,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...
但是使用sort按多个列值排列,同时使用tab作为分隔符,而且对于某些列需要进行逆序排列,这样sort命令写起来比较麻烦了 比如下面的文件内容,使用[TAB]进行分割: Group-ID Category-ID Text ...
主要给大家介绍了关于在linux中利用lsof命令如何查看文件打开情况的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试test Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux...
Linux sort命令 Linux sort命令用于将文本文件内容加以排序。 sort可针对文本文件的内容,以行为单位来排序。 语法 sort [-bcdfimMnr][-o][-t][+-][--help][--verison][文件] 参数说明: -b 忽略每行前面开始出的...
今天小编就为大家分享一篇关于Linux文本处理命令sort详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
文中介绍了sort 和 tsort命令的特点和功能,并且指出了使用这种命令的方法。通过使用 sort 和 tsort,而不是采取使用 Perl 或 Awk 的较复杂的解决方案,可以节省时间。