Linux中的管道命令(四)

uniq

uniq程序查找连续重复的行,一般用于有序数据的查重。

下面是fruit文件的内容:

$ cat fruit
apple
apple
banana
grape
grape
grape
peach
pear
pear
watermelon

uniq程序在没有任何命令选项的情况下,对输入去除重复行后输出:

$ uniq fruit
apple
banana
grape
peach
pear
watermelon

它有几个常用的命令选项:

  • -c:去除重复行后输出,在每行前标明重复次数。
  • -u:仅输出不重复的行。
  • -d:仅输出重复行。

下面是几个例子:

$ uniq -c fruit # 在每行前标明重复次数
      2 apple
      1 banana
      3 grape
      1 peach
      2 pear
      1 watermelon
$ uniq -d fruit # 仅输出重复行
apple
grape
pear
$ uniq -u fruit # 仅输出不重复行
banana
peach
watermelon
$ uniq -cd fruit # 仅输出重复行,并标明重复次数
      2 apple
      3 grape
      2 pear

sort

sort程序对文件内容按行进行排序。

首先来看city文件的内容:

$ cat city
Chengdu
Tsinan
Ningpo
Canton
Tsinan
Sining
Sining
Taipei
Canton

city文件是一个没有排序的文件,sort同学可以帮我们把它变成排序好的:

$ sort city
Canton
Canton
Chengdu
Ningpo
Sining
Sining
Taipei
Tsinan
Tsinan

然而事实上并没有写入文件,使用-o选项指定输出文件:

$ sort -o citysort city

这条命令中sortcity文件中的内容排序后写入到citysort中。

使用-f命令选项使sort忽略大小写差异。

使用-c命令选项查看文件是否是排序好的:

$ sort -c city
sort: city:3: disorder: Ningpo

sort告诉我们city文件从Ningpo开始是未排序的。

-u选项使sort对文件内容进行排序,并去除重复行:

$ sort -u city
Canton
Chengdu
Ningpo
Sining
Taipei
Tsinan

还有一个很重要的选项,就是-r选项,它使sort反向排序:

$ sort -ru city
Tsinan
Taipei
Sining
Ningpo
Chengdu
Canton

相关:还有很多有用的过滤器,比如expand、fmt、join等等,您可以使用man查看使用说明。

原文发布于微信公众号 - mwangblog(mwangblog)

原文发表时间:2018-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Golang语言--中间的derfer

defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行, 最...

41980
来自专栏hbbliyong

C#新功能--命名参数与可选参数

  可能是篇幅太短了,又被打入冷宫了.先重发一篇加上可选参数.本来不想加这个呢,因为可选参数可能大家用的会多点.其实这 两个在VB中早就有了,C#中,在.net...

34050
来自专栏我是攻城师

ElasticSearch2.3.4之Java Api调用例子

42750
来自专栏java 成神之路

JVM 类加载机制深入浅出

273110
来自专栏决胜机器学习

PHP开发过程的那些坑(二) ——PHP empty函数

PHP开发过程的那些坑(二)——PHP empty函数 (原创内容,转载请注明来源,谢谢) 坑: 在工作过程中,常用empty()函数判断数组是否为空,为空时返...

39280
来自专栏加米谷大数据

MongoDB 概念解析

不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍 下表将帮助您更容易理解Mongo中的一些概念...

358110
来自专栏python学习指南

操作系统六文件管理

第六章 文件管理 一、前言 本篇是操作系统系列的最后一篇,文件管理,由于系统的内部内存有限并且不能长期保存,故平时总是把她们以文件的形式保存在外村中,需要时再...

19280
来自专栏cloudskyme

什么是线程安全

什么是线程安全?       如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且...

33180
来自专栏calmound

ZOJ 2724 Windows Message Queue(优先队列)

优先队列的概念及使用方法 题意:输入GET,队列为空则输出空,否则输出最优先的数据(所谓最优先,就是优先值最小的一个),若输入PUT,输入三个数据,分别是名字,...

37250
来自专栏云霄雨霁

Java虚拟机--内存模型

23150

扫码关注云+社区

领取腾讯云代金券