Linux管理员 - uniq命令



以下是uniq常用的开关。此命令报告或忽略重复的行。

开关 动作
-c 以出现次数作为行前缀
-i 忽略大小写
-u 仅打印唯一行
-w 检查字符,比较不超过n个字符
-s 跳过字符,避免比较前两个N个字符
-f 跳过字段,避免比较前N个字段
-D 打印所有重复行组

我们之前在一些例子中简要地使用了uniq。uniq命令允许我们根据匹配项过滤文件的行。例如,假设我们在销售部门又获得了一位名叫Matt Davis的员工。三天后,会计部门需要销售参与奖下一季度的新的估算。我们可以使用以下命令检查员工列表。

[root@centosLocal centos]# cat ./Documents/names.txt | wc -l 
30 
[root@centosLocal centos]#

我们告诉他们销售部门有30人参加年度参与奖。会计部门很可能会注意到差异:他们只需要制作29个独特的奖牌。让我们再试一次 -

[root@centosLocal Documents]# cut -d ":" -f 1,2 ./names.txt | sort | uniq | wc -l 
29
[root@centosLocal Documents]#

现在我们有足够的信息来提供给会计部门一个准确的销售部门独特参与奖的数量(他们不需要支付制作两个唯一奖牌的费用。只需为“Matt Davis”复制第二个)。

注意 - 在查找唯一行时,我们总是希望使用sort,将其输出传递给uniq。如果非唯一条目不在行内顺序,则它们将不会被视为重复行。

要快速生成一份报告,让我们知道有多少销售人员共用一个办公室 -

[root@centosLocal Documents]# sort -t":" -k3 ./names.txt | cut -d ":" -f3  | 
uniq -c | sort -n 
  1 100 
  1 108 
  1 201 
  1 203 
  1 204 
  1 205 
  1 206 
  1 301 
  1 304 
  1 404 
  1 405 
  1 501 
  1 504 
  1 602 
  1 603 
  1 608 
  1 702 
  1 902 
  2 101 
  2 102 
  2 305 
  2 901 
  2 903 
  3 403 
  
[root@centosLocal Documents]#
basic_centos_linux_commands.htm
广告