shell除去重复的行——uniq命令

From: http://blog.163.com/redhumor@126/blog/static/1955478420123119218332/

进行排序之后,您会发现有些行是重复的。有时候该重复信息是不需要的,可以将它除去以节省磁盘空间。不必对文本行进行排序,但是您应当记住
uniq
在读取行时会对它们进行比较并将只除去两个或更多的连续行。下面的示例说明了它实际上是如何工作的:

清单 1. 用 uniq 除去重复行


              $ cat happybirthday.txt  Happy Birthday to You!  Happy Birthday to You!  Happy Birthday Dear Tux!  Happy Birthday to You!          $ sort happybirthday.txt   Happy Birthday Dear Tux!  Happy Birthday to You!  Happy Birthday to You!  Happy Birthday to You!          $ sort happybirthday.txt | uniq  Happy Birthday Dear Tux!  Happy Birthday to You!        

警告:请不要使用
uniq
或任何其它工具从包含财务或其它重要数据的文件中除去重复行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计部造成许多困难。千万别这么干!


有关 uniq 的更多信息

本系列文章介绍了文本实用程序,它对在手册页和信息页找到的信息作了补充。如果您打开新的终端窗口并输入
man uniq

info uniq
,或者打开新的浏览器窗口并查看 位于 gnu.org 的 uniq 手册页,那么就可以了解更多的相关信息。


 

如果您希望您的工作轻松点,比如只显示唯一的或重复的行,那么该怎么办呢?您可以用
-u
(唯一)和
-d
(重复)选项来做到这一点,例如:

清单 2. 使用 -u 和 -d 选项


              $ sort happybirthday.txt | uniq -u  Happy Birthday Dear Tux!          $ sort happybirthday.txt | uniq -d  Happy Birthday to You!        

您还可以用
-c
选项从
uniq
中获取一些统计信息:

清单 3. 使用 -c 选项


              $ sort happybirthday.txt | uniq -uc        1 Happy Birthday Dear Tux!          $ sort happybirthday.txt | uniq -dc        3 Happy Birthday to You!        

就算
uniq
对完整的行进行比较,它仍然会很有用,但是那并非该命令的全部功能。特别方便的是:使用
-f
选项,后面跟着要跳过的字段数,它能够跳过给定数目的字段。当您查看系统日志时这非常有用。通常,某些项要被复制许多次,这使得查看日志很难。使用简单的
uniq
无法完成任务,因为每一项都以不同的时间戳记开头。但是如果您告诉它跳过所有的时间字段,您的日志一下子就会变得更加便于管理。试一试
uniq -f 3 /var/log/messages
,亲眼看看。

还有另一个选项
-s
,它的功能就像
-f
一样,但是跳过给定数目的字符。您可以一起使用
-f

-s

uniq
先跳过字段,再跳过字符。如果您只想使用一些预先设置的字符进行比较,那么该怎么办呢?试试看
-w
选项。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt6.2.1使用clang格式化代码

1、环境说明 Qt6.2.1 64bit, windows环境, 安装链接:Download Qt | Develop Desktop & Embedded Systems | Qt llvm 10.0.0 64bit windows环境,安装链接: LLVM Download Page 2、启用Beautifer 帮助--关于插件,勾选Beautif…

为何加入了AddType就无法启动Apache

AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php.php 如上面第3句加入了就无法启动apache。这是为什么? 其实我一直都没有错误。后来在网络上找了下,原来addtype这种值只有通过拷贝&#xff0c…

[react] 请说说你对react的render方法的理解

[react] 请说说你对react的render方法的理解 render是class组件中必须被重载的方法,组件执行render方法的条件如下: 初始渲染this.setState方法,参数不能为null,及时this.setState({}),或者setState一个相同的值,也会导致render…

Getting Started With Hazelcast 读书笔记(第七章)

第七章 部署策略 Hazelcast具有适应性,能根据不同的架构和应用进行特定的部署配置,每个应用可以根据具体情况选择最优的配置: 数据与应用紧密结合的模式(重点,of就是这种) 胖客户端模式(最好用一种) 轻成员节点模式(折衷上面两种) 1.使用紧密结合的模式,每个JVM实例…

shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)

From: http://churuimin425.blog.163.com/blog/static/341298772012230112956712/ 删除文本中的重复行(sortuniq/awk/sed)三种常见方法:第一,用sortuniq,注意,单纯uniq是不行的。shell> sort -k2n file | uniq > a.out 这里我做了个…

Qt 调用Python引擎混合编程

0、前言 使用Qt和Python做混合编程,充分发挥Qt GUI的图形化框架优势和Python数据处理的计算能力。复杂的计算可用到Python众多三方库,将Python需要执行的功能写成py文件,做成插件的形式,被Qt c调用,修改py文件即可实现…

高扫后督解决方案 力助银行内部核查

网络时代,传统扫描仪需求萎缩,但作为扫描仪家族中重要成员,高速扫描仪却正经历逆势繁荣:因随以金融、教育、政府为代表的行业信息化建设力度不断加强,海量文档快速扫描及数字化存储管理需求飞涨,而满足这类…

[react] 在react中遍历的方法有哪些?它们有什么区别呢?

[react] 在react中遍历的方法有哪些?它们有什么区别呢? 有React.Children.map和 React.Children.forEach这两个方法,他们的参数都是在组件中接受props.children这个ReactNode作为参数,然后进行遍历。专门提供这两个遍历方法的目的…

C# 特性 Attribute

特性就是在类的类名称、属性、方法等上面加一个标记,使这些类、属性、方法等具有某些统一的特征,从而达到某些特殊的需要。举个小栗子:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作、文件的操作…

setsockopt , getsoctopt 函数的Level 参数和 name 参数对应表!!!

From: http://blog.csdn.net/jasonm2008/article/details/4016292 int setsockopt( SOCKET s, int level, int optname, const char* optval, int optlen ); 对于这个函数的level级别的参数到底有哪些, optname ,对应的又有哪些,一…

Qt 调用MATLAB引擎混合编程

0、前言 C/C调用MATLAB有三个方式:调用dll文件、调用exe可执行程序和调用Engin引擎。 第一种方式利用MATLAB Coder 将MATLAB代码生成C/C代码和相关动态链接库,可以在没有MATLAB的电脑和设备上运行。 第二种方式利用MATLAB将MATLAB代码编译成exe可执行…

caja 原理 : 前端

作为前端开放的基础安全保证,caja 是目前比较合适的运行机制,包括前端运行环境以及后端编译环境,这次先整体介绍下 caja 在前端是如何屏蔽外部模块代码对整体应用的影响 (注意:官方文档较少,以下为自己理解…

[react] 请说说什么是useImperativeHandle?

[react] 请说说什么是useImperativeHandle? // useImperativeHandle 可以让你在使用 ref 时自定义暴露给父组件的实例值。 // useImperativeHandle 应当与 forwardRef 一起使用:import React, { useImperativeHandle, forwardRef } from react import {…

xcode3.2.6升级至4.0.2经验加教训总结(转)

首先,完美运行都项目直接在Xcode4.0.2中build可能会出现这样一个错误(人品好的自觉绕道):[BEROR]No architectures to compile for (ARCHSi386, VALID_ARCHS). 首先第一反应是打开工程的Build Settings,最基本的检测&a…

扩展欧几里德问题

我们先来看这个问题 求最大公约数的gcd(m,n)方法也可以如下定义: 如果m%n为0,那么gcd(m,n)的值为n. 否则,gcd(m,n)就是gcd(n,m%n) 编写一个递归的方法来求最大公约数。编写一个测试程序,计算gcd(24,16)和gcd(255,5) 我们先引入欧几…

步步为营:Asp.Net序列化Json格式的两种方法

过去我们使用JSON.net序列化一个对象,在asp.net3.5中已经集成了序列化对象为json的方法。 我们分别针对System.Runtime.Serialization.Json和System.Web.Script.Serialization两个命名空间下的不同方法进行序列化和反序列化。 System.Runtime.Serialization.Json (在…

[react] react中setState的第二个参数作用是什么呢?

[react] react中setState的第二个参数作用是什么呢? 第二个参数是一个callback函数,用于setState设置state的属性值成功之后的回调,此时调用this.state.property可以取到刚刚设置的最新的值 个人简介 我是歌谣,欢迎和大家一起…

Qt 调用VISA库通过SCPI程控仪器-以IT8906A电子负载为例

SCPI是一种可编程仪器的标准命令,可通过 GPIB, RS232, USB, LAN接口等控制仪器功能的编程语言。 SCPI 置于 IEEE 488.2 硬件部分的顶层。相同 SCPI 命令和参数控制着不同机器的相同功能。一般标准仪器都支持SCPI协议,如…

TCP控制字段标志:URG、ACK、PSH、RST、SYN、FIN

From: http://blog.csdn.net/wangfeng2500/article/details/7650062 在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段。 它们的含义是&#x…

Ubuntu 14.04 ThinkPad E431无线网卡驱动安装

Ubuntu 14.04下安装无线网卡驱动。 sudo apt-get install linux-headers-generic build-essential dkms sudo apt-get install linux-source sudo apt-get install --reinstall bcmwl-kernel-source sudo modprobe wl转载于:https://www.cnblogs.com/shoemaker/p/4800772.ht…