Akemi

高效使用Linux-管道与组合命令

2025/02/13

利用管道与六个常用组合命令wc head cut grep sort和uniq

相对比较基础,现在基本都已经用三剑客来代替这几个了,我就只举几个比较进阶的例子了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# wc直接使用,输出行数、单词、字符数
wc Linux-Firewall.md
126 386 4603 Linux-Firewall.md

# -l w c分别单独输出
wc -l Linux-Firewall.md
126 Linux-Firewall.md
wc -w Linux-Firewall.md
386 Linux-Firewall.md
wc -c Linux-Firewall.md
4603 Linux-Firewall.md

# head命令列出前五个
ls /bin | head -5
1panel
1pctl
[
addr2line
alias

# grep 当前目录下递归查询
grep -r zhz
Python.md:user3 = {'name': 'zhz','age':'25','salary':'5000','address':'hz'}
Python.md:user3 = {'name': 'zhz','age':'25','salary':6000,'address':'hz'}
Python.md:person3 = ('zhz',25,'male')
Python.md:#zhz is man
Shell.md:172.16.2.135:two:three:four:five:zhz
Shell.md:cat /root/test | grep zhz | cut -d ":" -f 2,6

-v -c -w -i等多个参数就不说了

# 列出/usr/lib下文件夹的数量,核心都在于ls -l后筛出代表目录的d
ls -l /usr/lib | awk -F 'r' '{print $1}' | grep -c d
ls -l /usr/lib | cut -c1 | grep d | wc -l

# sort默认按字母进行排序,添加-n按数字排序,一般都直接排数字
# 找出nginx日志中,访问次数最多的ip,并列出前五个
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -n -r | head -5
209 122.191.17.14
33 89.248.163.214
20 162.158.162.193
12 89.248.171.23
11 138.197.141.26

在上面这条命令中,首先awk筛出所有的ip,sort排序,uniq合并-c统计,sort按数字降序排序,head列出前五个

# 按照成绩等级进行倒序排序
cut -f1 grades | sort | uniq -c | sort -nr
4 B
3 A
2 C
1 F
1 D

# md5sum 输出文件的摘要
md5sum Linux-Firewall.md
d51d4ecbda9869d7f79ed097616b85be Linux-Firewall.md

# 通过md5sum找出文件夹下重复的图片
md5sum *.jpg ——列出所有jpg的md5
md5sum *.jpg | cut -c1-32 | sort ——截取前32个字符并排序
md5sum *.jpg | cut -c1-32 | sort | uniq -c ——统计重复数据
md5sum *.jpg | cut -c1-32 | sort | uniq -c | sort -nr ——统计重复的数量
md5sum *.jpg | cut -c1-32 | sort | uniq -c | sort -nr | grep -v " 1"
——去除数量为1的图片,剩下的就都是存在重复的图片
CATALOG