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 或任何其他工具从包含财务或其他重要数据的文件中除去重复 行。在这种情况下,重复行几乎总是表示同一金额的另一个交易,将它除去会给会计 部造成许多困难。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

度假的小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值