10.Linux文件管理命令---uniq忽略文件中的重复行

简介: 10.Linux文件管理命令---uniq忽略文件中的重复行

uniq忽略文件中的重复行

作用:文件经过处理后,在它的输出文件中可能会出现重复的行。例如,使用 cat 命令将

两个文件合并后,再使用 sort 命令进行排序,就可能出现重复行。这时可以使用 uniq 命令将这

些重复行从输出文件中删除,只留下每条记录的唯一样本。

用法:uniq [选项]…[输入[输出]]

主要选项如下。

长选项必须使用的参数对于短选项也是必须使用的。

命令 描述
-c,--count 在每行前加上表示相应行目出现次数的前缀编号。
-d,--repeated 只输出重复的行。
-D,--all-repeated[=delimit-method 显示所有重复的行。
delimit-method={none(default),prepend,separate} 以空行为界限。
-f,--skip-fields=N 在比较时跳过前 N 列。
-i,--ignore-case 在比较的时候不区分大小写。
-s,--skip-chars=N 在比较时跳过前 N 个字符。
-u,--unique 只显示唯一的行。
-z,--zero-terminated 使用’\0’作为行结束符,而不是新换行。
-w,--check-chars=N 对每行第 N 个字符以后的内容不作对照。
--help 显示此帮助信息并退出。
-version 显示版本信息并退出。

案例练习

首先看一下示例文件。

$ cat happy 
Happy Birthday to You! 
Happy Birthday to You! 
Happy Birthday Dear cjh! 
Happy Birthday to You!

(1)显示文件 happy 中不重复的行。

# uniq -u happy 
Happy Birthday Dear cjh! 
Happy Birthday to You! 

(2)显示文件 happy 中不重复的行,从第二个字段的第二个字符开始进行比较。

#uniq -u -1 +1 happy

(3)用-c 选项从 uniq 中获取一些统计信息。

#sort happy | uniq -dc 
3 Happy Birthday to You! 

这里uniq命令借助管道命令从标准输入设备读取文件,首先使用sort命令对文件进行排序, 然后对排序结果进行操作。

(4)删除文件中重复的行并输出到一个新文件。

#sort happy|uniq-uniqhappy

(5)高级应用。

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

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

相关文章
|
20天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
53 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
6天前
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
63 14
|
27天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
53 14
Linux 10 个“who”命令示例
|
5天前
|
存储 NoSQL Linux
linux积累-core文件是干啥的
核心文件是Linux系统在程序崩溃时生成的重要调试文件,通过分析核心文件,开发者可以找到程序崩溃的原因并进行调试和修复。本文详细介绍了核心文件的生成、配置、查看和分析方法
32 6
|
7天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
30 8
|
16天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
103 20
|
7天前
|
存储 NoSQL Linux
linux之core文件如何查看和调试
通过设置和生成 core 文件,可以在程序崩溃时获取详细的调试信息。结合 GDB 等调试工具,可以深入分析 core 文件,找到程序崩溃的具体原因,并进行相应的修复。掌握这些调试技巧,对于提高程序的稳定性和可靠性具有重要意义。
45 6
|
17天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
44 7
|
2月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
36 9
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解