linux-sort、uniq、wc字符处理命令使用

1、sort

1.1、命令介绍

sort
-r 倒序
-n 按数字排序
-t 指定分隔符
-k 指定第几列几字符(指定1,13.13.3)

1.2、常用排序

1.2.1、演示数据

cat >> file.txt <<EOF
b:3
c:2
a:4
e:5
d:1
f:11
EOF

1.2.2、默认首行字符排序

sort file.txt 
a:4
b:3
c:2
d:1
e:5
f:11

1.2.3、指定分割符、几列、按数字类型排序

sort -t ':' -n -k2 file.txt 
d:1
c:2
b:3
a:4
e:5
f:11

1.3、IP地址排序

1.3.1、演示数据

cat >> ip.txt <<EOF
192.168.3.1 00:0F:AF:81:19:1F
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.1 00:0F:AF:81:19:1F
192.168.2.2 00:0F:AF:85:6C:25
192.168.3.3 00:0F:AF:85:70:42
192.168.2.20 00:0F:AF:85:55:DE
192.168.1.21 00:0F:AF:85:6C:09
192.168.2.22 00:0F:AF:85:5C:41
192.168.0.151 00:0F:AF:85:6C:F6
192.168.1.152 00:0F:AF:83:1F:65
192.168.0.153 00:0F:AF:85:70:03
192.168.3.10 00:30:15:A2:3B:B6
192.168.1.11 00:30:15:A3:23:B7
192.168.3.12 00:30:15:A2:3A:A1
EOF

1.3.2、按IP地址点为分割,取3,4列指定第几个字符排序

# 3.1代示第3列,第一个字符,
# 3.1nr 设置数字类型、降序
]# sort -t '.' -k3.1,3.1nr -k4.1,4.3nr ip.txt 
192.168.3.12 00:30:15:A2:3A:A1
192.168.3.10 00:30:15:A2:3B:B6
192.168.3.3 00:0F:AF:85:70:42
192.168.3.3 00:0F:AF:85:70:42
192.168.3.2 00:0F:AF:85:6C:25
192.168.3.1 00:0F:AF:81:19:1F
192.168.2.22 00:0F:AF:85:5C:41
192.168.2.22 00:0F:AF:85:5C:41
192.168.2.21 00:0F:AF:85:6C:09
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.20 00:0F:AF:85:55:DE
192.168.2.2 00:0F:AF:85:6C:25
192.168.1.152 00:0F:AF:83:1F:65
192.168.1.21 00:0F:AF:85:6C:09
192.168.1.12 00:30:15:A2:3A:A1
192.168.1.11 00:30:15:A3:23:B7
192.168.1.11 00:30:15:A3:23:B7
192.168.1.10 00:30:15:A2:3B:B6
192.168.1.1 00:0F:AF:81:19:1F
192.168.0.153 00:0F:AF:85:70:03
192.168.0.153 00:0F:AF:85:70:03
192.168.0.152 00:0F:AF:83:1F:65
192.168.0.151 00:0F:AF:85:6C:F6
192.168.0.151 00:0F:AF:85:6C:F6

2、uniq

2.1、命令介绍

如果文件中有多行完全相同的内容,当前是希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数,
那么就可以使用uniq命令解决这个问题(但是必须配合sort 使用)。

uniq
-c计算重复的行

2.2、常用的去重

2.2.1、演示数据

cat > file.txt <<EOF
abc
123
abc
123
EOF

2.2.2、先排序后去重且打印出重复的数量

sort file.txt | uniq -c
      2 123
      2 abc

2.3、统计IP地址出现的次数,次数按降序

# 演示数据参考:1.3.1、演示数据
awk -F' ' '{print $1}' ip.txt | sort -n | uniq -c | sort -t ' ' -k1nr
      2 192.168.0.151
      2 192.168.0.153
      2 192.168.1.11
      2 192.168.2.20
      2 192.168.2.22
      2 192.168.3.3
      1 192.168.0.152
      1 192.168.1.1
      1 192.168.1.10
      1 192.168.1.12
      1 192.168.1.152
      1 192.168.1.21
      1 192.168.2.2
      1 192.168.2.21
      1 192.168.3.1
      1 192.168.3.10
      1 192.168.3.12
      1 192.168.3.2

3、wc

3.1、命令介绍

wc 统计行数
-l 显示文件行数
-c 显示文件字节
-w 显示文件单词

3.2、常用方法

 #] wc -l /etc/fstab 
11 /etc/fstab

4、扩展部分-命令实践

4.1、统计域名访问的次数

4.1.1、演示数据

cat > web.log <<'EOF'
http://www.example.com/index.html
http://www.example.com/1.html
http://post.example.com/index.html
http://mp3.example.com/index.html
http://www.example.com/3.html
http://post.example.com/2.html
EOF

4.1.2、awk+sort+uniq-解决方法

]# awk -F '/' '{print $3}' web.log  | sort -rn| uniq -c
      3 www.example.com
      2 post.example.com
      1 mp3.example.com

4.1.2、cut+sort+uniq-解决方法

]# cut -d '/' -f3  web.log  | sort -rn| uniq -c
      3 www.example.com
      2 post.example.com
      1 mp3.example.com

4.2、获取网口IP地址

]# ifconfig ens33 | grep netmask | awk  '{print $2}'
192.168.10.15

]# ifconfig ens33 | awk '/netmask/ {print $2}'
192.168.10.15

4.3、修改selinux配置

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config

 

posted @ 2023-04-19 17:07  小粉优化大师  阅读(55)  评论(0)    收藏  举报