linux-sort、uniq、wc字符处理命令使用
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