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