1、sort
1.1、命令介绍
sort
-r 倒序
-n 按数字排序
-t 指定分隔符
-k 指定第几列几字符(指定1,13.1,3.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