飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

010 Linux 文本统计与去重 (wc 和 uniq)

时间:2022-02-10  作者:bilahepan  

file

wc 命令一般是作为组合命令的一员与其他命令一同起到统计的作用。而一般情况下使用wc -l 命令较多。
uniq 可检查文本文件中重复出现的行,一般与 sort 命令结合使用。一起组合搭配使用完成统计、排序、去重。

1 wc 常用组合命令

  • ls | wc -l # 统计当前文件夹下,文件数量;
  • ls *.txt | wc -l # 统计当前文件夹下、第一层目录下所有的txt文件数量;
  • find . -maxdepth 1 -name \'*.txt\' | wc -l # 统计当前文件夹、第一层目录下所有的txt文件数量;

2 wc 基本参数和格式

命令格式: wc [-clmw] [file ...]

  1. -c # 统计字节数
  2. -l # 统计行数
  3. -w # 统计单词数
  4. -m # 统计字符数

3 wc命令示例

c、l、w、m 用例

域名 内容如下:

!
hello china!
hello!
china!

file

配合 grep 统计命中的目标行数用例

# grep 正则匹配统计命中的目标行数,wc 命令在后面
grep -E  "(14:41(.)+internal-internal spend)"  域名 | wc -l

4 uniq 的常用参数以及配合 sor t应用示例

uniq 常用参数

uniq 可检查文本文件中重复出现的行,一般与 sort 命令结合使用。

  1. -c或--count 在每列旁边显示该行重复出现的次数;
  2. -d或--repeated 仅显示重复出现的行;
  3. -u或--unique 仅显示出一次的行;

域名 内容如下:

111,222,333
111,222,333
333,444,555
xxx,yyy,zzz

cat 域名 |sort -r

xxx,yyy,zzz
333,444,555
111,222,333
111,222,333

cat 域名 |sort|uniq

111,222,333
333,444,555
xxx,yyy,zzz

cat 域名 |sort -r|uniq -u

xxx,yyy,zzz
333,444,555

cat 域名 |sort -r|uniq -d

111,222,333

cat 域名 |sort -r|uniq -c

1 xxx,yyy,zzz
1 333,444,555
2 111,222,333

5 案例一(文本统计)

有一个 b. txt 文本(内容如下),要求将所有域名截取出来,并统计重复域名出现的次数。

http://域名/域名
https://域名/域名
http://域名.cn/域名
https://域名/域名
http://域名.cn/域名
https://域名/域名

命令和结果

cat 域名 |cut -d "/" -f3 |sort| uniq -c|sort -nr
3 域名
2 域名.cn
1 www. 域名

# cut -d "/" -f3  用"/"作为分隔符,截取第个3字段
# sort 第一次排序
# uniq -c 显示该行重复次数
# sort -nr 按照数值从大到小排序

6 案例二( ip 连接数统计并排序)

统计当前服务器正在连接的 ip 地址,并按连接次数排序;

netstat -an I grep ESTABLISHED | awk \'{print $5}\' | cut -d ":" -f1 | sort -n | uniq -c | sort -nr

小结

wc 用来统计指定文件中的字节数、行数、单词数、字符数;
uniq 可检查文本文件中重复出现的行列。
可对标准输入,配合 grep、sort、find 等命令完成统计、排序、去重。

「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。