Linux之uniq

  • 语法

uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ InFile [ OutFile ] ]

  • 用途

uniq 报告或删除文件中重复的行

  • 描述

uniq 命令读取由 InFile 参数指定的标准输入或文件。该命令首先比较相邻的行,然后除去第二行和该行的后续副本。重复的行一定相邻。(在发出 uniq 命令之前,请使用 sort 命令使所有重复行相邻。)最后,uniq 命令将最终单独的行写入标准输出或由 OutFile 参数指定的文件。InFile 和 OutFile 参数必须指定不同的文件。如果输入文件用“- ”表示,则从标准输入读取;输入文件必须是文本文件。文本文件是包含组织在一行或多行中的字符的文件。这些行的长度不能超出 2048 个字节(包含所有换行字符),并且其中不能包含空字符。

缺省情况下,uniq 命令比较所有行。如果指定了-f n标志, uniq 命令忽略由n变量指定的字段数目。 字段是一个字符串,用一个或多个 <空格 > 字符将它与其它字符串分隔开。

如果指定了 -s n标志, uniq 命令忽略由n变量指定的字段数目。n值必须是正的十进制整数。

当前本地语言环境决定了 -f 标志使用的 <空白> 字符以及 -s 标志如何将字节解释成字符。

  • 标志

-c 在输出行前面加上每行在输入文件中出现的次数。(很有用)

-d 仅显示重复行。

-u 仅显示不重复的行。

-f n 忽略由 n变量指定的字段数目。如果 n变量的值超过输入行中的字段数目, uniq 命令用空字符串进行比较。这个标志和 -n标志是等价的。

-s n 忽略由 n变量指定的字符的数目。如果 n变量的值超过输入行中的字符的数目, uniq 用空字符串进行比较。如果同时指定 -f 和 -s 标志, uniq 命令忽略由 -s n标志指定的字符的数目,而从由 -f n标志指定的字段后开始。 这个标志和 +n标志是等价的。

103742_jG6O_2410074.png

  • 退出状态

    0 :命令运行成功

    >0 :发生错误

  • 补充

文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样

  • 示例

[root@stu100 ~]# cat test
boy took bat home
boy took bat home
girl took bat home
dog brought hat home
dog brought hat home
dog brought hat home

看test文件的内容,可以看到其中的连续重复行

[root@stu100 ~]# uniq test
boy took bat home
girl took bat home
dog brought hat home

uniq命令不加任何参数,仅显示连续重复的行一次

[root@stu100 ~]# uniq -c test
2 boy took bat home
1 girl took bat home
3 dog brought hat home

-c 参数显示文件中每行连续出现的次数。

[root@stu100 ~]# uniq -d test
boy took bat home
dog brought hat home

-d选项仅显示文件中连续重复出现的行。

[root@stu100 ~]# uniq -u test
girl took bat home

-u选项显示文件中没有连续出现的行。

[root@stu100 ~]# uniq -f 2 -s 2 test
boy took bat home

忽略每行的前2个字段,忽略第二个空白字符和第三个字段的首字符,结果at home

[root@stu100 ~]# uniq -f 1 test
boy took bat home
dog brought hat home

忽略每行的第一个字段,这样boy ,girl开头的行看起来是连续重复的行。

转载于:https://my.oschina.net/u/2410074/blog/839454

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值