您的位置:首页 > 运维架构 > Shell

Linux shell 脚本攻略学习笔记6

2017-05-08 21:22 369 查看
排序,唯一与重复

同文本文件打交道时,少不了要用到排序。sort命令能够帮助我们对文本文件和stdin进行排序操作。它通常会配合其他命令来生成所需要的输出。uniq是一个经常与sort一同使用的命令。它的作用是从文本或stdin中提取唯一的行。下面来看看sort和uniq命令的常见用法。

一:

(1) 我们可以按照下面的方式轻松地对一组文件(例如file1.txt和file2.txt) 进行排序:

$ sort file1.txt file2.txt >sorted.txt
或是
$ sort file1.txt file2.txt -o sorted.txt

(2)按照数字顺序进行排序

$ sort -n file.txt
(3)按照逆序进行排序:

$sort -r file.txt

(4) 按照月份进行排序

$ sort -M months.txt(5)合并两个已经排序过的文件
$sort -m sorted1.txt sorted2.txt(6)找出已排序文件中不重复的行
$ sort file1.txt file2.txt |uniq

二:深入命令
(1)根据键或者列进行排序

我们可以按列将下面的文本进行排序:

有很多种方法可以对这段文本排序。目前他是按照序号(第一列)来排序的,我们也可以依据第二列和第三列来排序。

-k指定了排序应该按照哪一个键来进行。键指的是列号,而列号就是执行排序时的依据,-r告诉sort命令按照逆序进行排序。例如:

a) 根据第一列,以逆序形式排序

b) 依据第二列进行排序

通常情况下,键就是文本文件中的列。列与列之间用空格分隔。但有时候,我们需要将特定范围内的一组字符作为键。在这种情况下,必须明确地将键指定为某一个范围内的字符,这个范围可以用键起止的字符位置来说明

三:uniq

uniq命令通过消除重复的内容,从给定的输入中(stdin或命令行参数文件)找出唯一的行。它也可以用来找出输入中出现的重复行。

uniq只能作用于排过序的数据输入,因此uniq要么使用管道,要么将排过序的文件作为输入,与sort命令结合使用。

例如:

只显示唯一的行:

要统计各行在文件中出现的次数,使用下面的命令:

找出重复的行:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell 脚本