Linux命令:uniq命令和wc命令

Linux命令:uniq命令和wc命令uniq 命令用于检查及删除文本文件中重复出现的行列

1 uniq命令

1.1 uniq简介

uniq 命令用于检查及删除文本文件中重复出现的行列。它通过对输入文本进行比较,找出相邻的重复行,并只输出其中的一行。如果文件没有排序,uniq 默认只会删除相邻的重复行,不会删除不相邻的重复行。因此,通常在使用 uniq 之前,会先使用 sort 命令对文件进行排序。

1.2说明

  • -c:在每行前面显示该行重复出现的次数
  • -d:只输出重复的行,每个组打印一行
  • -D:打印所有重复的行
  • -f, --skip-fields=N:比较时会跳过前面N行
  • -i:比较时忽略大小写
  • -s, --skip-chars=N:比较时会跳过前面N个字符
  • -u:只显示唯一的一行
  • -z:行分隔符是NUL,而不是换行符
  • -w, --check-chars=N:只比较每行前N个字符,之后的字符不再比较
  • –help:查看帮助信息
  • –version:显示版本信息

1.3案例

先编写一个测试文件

root@con02:~# cat a abcd abcd 2374hd67 2374fb;ll Abcd abcd  ijnk 098j dhyyi 7hyt fhyyi ijnk 2374fb;ll root@con02:~# 

1、默认输出

root@con02:~# uniq a abcd 2374hd67 2374fb;ll Abcd abcd  ijnk 098j dhyyi 7hyt fhyyi ijnk 2374fb;ll root@con02:~# 统计行数 root@con02:~# uniq -c a 2 abcd 1 2374hd67 1 2374fb;ll 1 Abcd 1 abcd 1  1 ijnk 1 098j dhyyi 1 7hyt fhyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# cat a |uniq -c 2 abcd 1 2374hd67 1 2374fb;ll 1 Abcd 1 abcd 1  1 ijnk 1 098j dhyyi 1 7hyt fhyyi 1 ijnk 1 2374fb;ll 1 # sort和uniq命令配合使用  root@con02:~# sort a |uniq -c 1 1 098j dhyyi 2 2374fb;ll 1 2374hd67 1  1 7hyt fhyyi 3 abcd 1 Abcd 2 ijnk root@con02:~# 

2、输出重复行

# -d 和 -D都是输出重复行 # -d:重复行只输出一次 # -D:输出所有重复行 root@con02:~# uniq -d a abcd root@con02:~# uniq -D a abcd abcd root@con02:~# 

3、比较一行中的部分字符

# -s:会跳过前面N个字符,只比较后面的字符 # -w:只比较前面N个字符,之后的字符不再比较 root@con02:~# uniq -s 7 -c a 2 abcd 1 2374hd67 1 2374fb;ll 4 Abcd 2 098j dhyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# uniq -s 6 -c a 2 abcd 1 2374hd67 1 2374fb;ll 2 Abcd 1  1 ijnk 1 098j dhyyi 1 7hyt fhyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# uniq -w 4 -c a 2 abcd 2 2374hd67 1 Abcd 1 abcd 1  1 ijnk 1 098j hyyi 1 7hyt hyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# uniq -w 5 -c a 2 abcd 1 2374hd67 1 2374fb;ll 1 Abcd 1 abcd 1  1 ijnk 1 098j dhyyi 1 7hyt fhyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# 

4、忽略大小写

root@con02:~# uniq -i -c a 2 abcd 1 2374hd67 1 2374fb;ll 2 Abcd 1  1 ijnk 1 098j dhyyi 1 7hyt fhyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# 

5、只显示唯一的行

root@con02:~# uniq -u -c a 1 2374hd67 1 2374fb;ll 1 Abcd 1 abcd 1  1 ijnk 1 098j dhyyi 1 7hyt fhyyi 1 ijnk 1 2374fb;ll 1 root@con02:~# 

2.4 uniq和sort命令配合使用

1、文本统计

有一个 a 文本,要求将所有包含abcd和2374的字符过滤出来,并统计这些字符重复出现的次数。

cat a |grep -iE "abcd|2374"|sort|uniq -c|sort -nr 2 abcd 2 2374fb;ll 1 abcdNUL 1 Abcd 1 2374hd67 # grep -iE "abcd|2374" : 先过滤包含abcd或2374的字符 # sort:进行过滤 # uniq -c 显示该行重复次数 # sort -nr 按照数值从大到小排序 

2、统计IP连接数并排序

netstat -antp I grep ESTABLISHED|grep -E "([0-9]{1,3}.){3}[0-9]{1,3}" | awk '{print $5}' | cut -d ":" -f1 | sort -n | uniq -c | sort -nr 5 0.0.0.0 3 127.0.0.1 ... 

2 wc命令

2.1 wc简介

wc 命令可以统计文本文件中的字符数、单词数和行数。它对于快速获取文件的统计信息非常有用,比如检查文件的大小、评估文本内容的长度等。wc 命令可以处理各种类型的文本文件,包括纯文本文件、源代码文件等。

2.2 说明

使用:

  • wc [OPTION]… [FILE]…
  • wc [OPTION]… --files0-from=F

常用参数:

  • -c, --bytes:输出字节数
  • -m, --chars:输出字符数
  • -l, --lines:输出行数
  • -L, --max-line-length:显示最长行的长度
  • -w, --words:输出单词数

2.3 案例

测试文件

root@con02:~# cat a abcd abcd 2374hd67 2374fb;ll Abcd abcdNUL  ijnk 098j dhyyi 7hyt fhyyi ijnk 2374fb;ll root@con02:~# 

1、默认输出

wc a 13 14 95 a # 输出内容分别为:行数 字数 字节数 文件 # 如果查看多个文件,会在最后输出每一项的总和 wc a /etc/passwd 13 14 95 a 36 52 1958 /etc/passwd 49 66 2053 total 输出行数 root@con02:~# wc -l a 13 a root@con02:~# 

2、输出字节、字符数、单词数

# 输出字节数 root@con02:~# wc -c a 95 a # 输出字符数 root@con02:~# wc -m a 95 a # 输出单词数 root@con02:~# wc -w a 14 a root@con02:~# 输出最长行的长度 root@con02:~# wc -L a 11 a root@con02:~# 

总结

sort命令、wc命令、uniq命令一般都会组合配合使用,再配和grep、awk和cut命令,在实际查询中很常用,尤其是在shell脚本中,所以这几个命令都需要掌握好。

今天的文章 Linux命令:uniq命令和wc命令分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-07 10:57
下一篇 2025-01-07 10:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/104442.html