Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

Linux下sort命令

$
0
0

前言

排序是大家写代码最长遇见的问题,稍微有基础的在短时间内都能写出快排,归并,插入,堆排等各种排序算法,但是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的奇技淫巧还是很方便的!

作者:zinss26914 发表于2013-8-27 18:51:32 原文链接
阅读:16 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>