shell-常用命令
# 查看命令帮助信息
command --help
比如cat --help
# head
head a.txt
默认获取文件前10行并打印head -n 15 a.txt
打印文件前15行并打印head -c 10 a.txt
打印文件前10个字节的内容
# tail
tail a.txt
默认获取文件后10行并打印tail -n 15 a.txt
打印文件后15行并打印tail -c 10 a.txt
打印文件后10个字节的内容
# head和tail组合使用
# 使用管道|
获取任意行数的文件内容
head -n 40 a.txt | tail -n 9
获取文件32行~40行
的内容并打印head -n 6 a.txt | tail -n 1 | wc -L
获取文件第6行内容的字节数
# clear
clear
清屏(快捷键Ctrl + l
)
# cut
- 取出文本中指定的列
- 默认以
tab
键进行分割(不支持不规则的空格)cut -f 2,4 test.txt
查看文件中每行通过tab
键分割后的第2,4列内容并打印出来。
- 选项
-d 指定分隔符
-f 指定获取的列号
cut -d ":" -f 1,3,5 /etc/passwd
查看文件中每行通过:
分割后的第1,3,5列内容并打印出来。
# sort
用于将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。
- 选项
-n
以数值大小进行排序-r
倒序-t
指定分隔符,默认为空格
# 测试文件内容如下(测试文件中没有可进行比较的数字字符串)
2019-08-14 12:20:58 INFO 小花 Pass 手机号
2019-08-14 12:20:58 INFO 小花 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 手机号
2019-08-14 12:20:58 ERROR 小刚 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 INFO 小花 Pass 邮箱
2019-08-14 12:20:58 INFO 小花 Pass 邮箱
2019-08-14 12:20:58 ERROR 小红 Pass 邮箱
2019-08-14 12:20:58 INFO 小红 Pass 邮箱
2019-08-14 12:20:58 CRITICAL 小华 Pass 邮箱
2019-08-14 12:20:58 INFO 小红 Pass 手机号
2019-08-14 12:20:58 INFO 小花 Pass 手机号
2019-08-14 12:20:58 INFO 小花 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 邮箱
2019-08-14 12:20:58 ERROR 小花 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:58 INFO 小刚 Pass 手机号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- 测试文件中没有可进行比较的数字字符串时,对文本的内容进行排序,则默认以字符的ASCII码数值从小到大进行排序
[root@aliyun ~]$ sort case.log 2019-08-14 12:20:58 CRITICAL 小华 Pass 邮箱 2019-08-14 12:20:58 ERROR 小刚 Pass 手机号 2019-08-14 12:20:58 ERROR 小刚 Pass 手机号 2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱 2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱 2019-08-14 12:20:58 ERROR 小红 Pass 邮箱 2019-08-14 12:20:58 ERROR 小花 Pass 手机号 2019-08-14 12:20:58 ERROR 小花 Pass 手机号 2019-08-14 12:20:58 ERROR 小花 Pass 手机号 2019-08-14 12:20:58 ERROR 小花 Pass 邮箱 2019-08-14 12:20:58 ERROR 小花 Pass 邮箱 2019-08-14 12:20:58 INFO 小刚 Pass 手机号 2019-08-14 12:20:58 INFO 小红 Pass 手机号 2019-08-14 12:20:58 INFO 小红 Pass 邮箱 2019-08-14 12:20:58 INFO 小花 Pass 手机号 2019-08-14 12:20:58 INFO 小花 Pass 手机号 2019-08-14 12:20:58 INFO 小花 Pass 手机号 2019-08-14 12:20:58 INFO 小花 Pass 邮箱 2019-08-14 12:20:58 INFO 小花 Pass 邮箱 2019-08-14 12:20:58 INFO 小花 Pass 邮箱
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 测试文件内容如下(测试文件中有可进行比较的数字字符串)
2019-08-14 12:20:58 INFO 小花 Pass 手机号
2019-08-14 12:20:57 INFO 小花 Pass 邮箱
2019-08-14 12:20:51 ERROR 小刚 Pass 手机号
2019-08-14 12:20:58 ERROR 小刚 Pass 手机号
2019-08-14 12:20:19 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 手机号
2019-08-14 12:20:16 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 INFO 小花 Pass 邮箱
2019-08-14 12:20:46 INFO 小花 Pass 邮箱
2019-08-14 12:20:58 ERROR 小红 Pass 邮箱
2019-08-14 12:20:45 INFO 小红 Pass 邮箱
2019-08-14 12:20:18 CRITICAL 小华 Pass 邮箱
2019-08-14 12:20:58 INFO 小红 Pass 手机号
2019-08-14 12:20:48 INFO 小花 Pass 手机号
2019-08-14 12:20:38 INFO 小花 Pass 手机号
2019-08-14 12:20:54 ERROR 小花 Pass 邮箱
2019-08-14 12:20:36 ERROR 小花 Pass 邮箱
2019-08-14 12:20:28 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:21 INFO 小刚 Pass 手机号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- 测试文件中有可进行比较的数字字符串时,对文本的内容进行排序,则默认以数字字符的数值大小从小到大进行排序(此时与使用
sort -n case.log
命令排序的结果一致,都是以数字字符串数值大小
来进行排序,只不过sort case.log
是默认排序效果,sort -n case.log
是手动指定以数字字符串数值大小
来进行排序)[root@aliyun ~]$ sort case.log 2019-08-14 12:20:16 ERROR 小花 Pass 手机号 2019-08-14 12:20:18 CRITICAL 小华 Pass 邮箱 2019-08-14 12:20:19 ERROR 小花 Pass 手机号 2019-08-14 12:20:21 INFO 小刚 Pass 手机号 2019-08-14 12:20:28 ERROR 小刚 Pass 邮箱 2019-08-14 12:20:36 ERROR 小花 Pass 邮箱 2019-08-14 12:20:38 INFO 小花 Pass 手机号 2019-08-14 12:20:45 INFO 小红 Pass 邮箱 2019-08-14 12:20:46 INFO 小花 Pass 邮箱 2019-08-14 12:20:48 INFO 小花 Pass 手机号 2019-08-14 12:20:51 ERROR 小刚 Pass 手机号 2019-08-14 12:20:54 ERROR 小花 Pass 邮箱 2019-08-14 12:20:57 INFO 小花 Pass 邮箱 2019-08-14 12:20:58 ERROR 小刚 Pass 手机号 2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱 2019-08-14 12:20:58 ERROR 小红 Pass 邮箱 2019-08-14 12:20:58 ERROR 小花 Pass 手机号 2019-08-14 12:20:58 INFO 小红 Pass 手机号 2019-08-14 12:20:58 INFO 小花 Pass 手机号 2019-08-14 12:20:58 INFO 小花 Pass 邮箱
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 倒序排序
[root@aliyun ~]$ sort -r case.log
2019-08-14 12:20:58 INFO 小花 Pass 邮箱
2019-08-14 12:20:58 INFO 小花 Pass 手机号
2019-08-14 12:20:58 INFO 小红 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 ERROR 小红 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 手机号
2019-08-14 12:20:57 INFO 小花 Pass 邮箱
2019-08-14 12:20:54 ERROR 小花 Pass 邮箱
2019-08-14 12:20:51 ERROR 小刚 Pass 手机号
2019-08-14 12:20:48 INFO 小花 Pass 手机号
2019-08-14 12:20:46 INFO 小花 Pass 邮箱
2019-08-14 12:20:45 INFO 小红 Pass 邮箱
2019-08-14 12:20:38 INFO 小花 Pass 手机号
2019-08-14 12:20:36 ERROR 小花 Pass 邮箱
2019-08-14 12:20:28 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:21 INFO 小刚 Pass 手机号
2019-08-14 12:20:19 ERROR 小花 Pass 手机号
2019-08-14 12:20:18 CRITICAL 小华 Pass 邮箱
2019-08-14 12:20:16 ERROR 小花 Pass 手机号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# uniq
- 去除重复内容,必须先使用
sort
排序后再使用uniq
才会去重成功- 测试文件如下
Python Java Java C Python JavaScript Go Go PHP
1
2
3
4
5
6
7
8
9- 使用
uniq
去重后[root@aliyun ~]$ sort language.txt | uniq C Go Java JavaScript PHP Python
1
2
3
4
5
6
7
- 使用
- 测试文件如下
- 选项
-d
仅打印有重复(duplicate)的元素[root@aliyun ~]$ sort language.txt | uniq -d Go Java Python
1
2
3
4-c
打印重复元素的个数[root@aliyun ~]$ sort language.txt | uniq -d -c 2 Go 2 Java 2 Python [root@aliyun ~]$ sort language.txt | uniq -c 1 C 2 Go 2 Java 1 JavaScript 1 PHP 2 Python
1
2
3
4
5
6
7
8
9
10
11
# 进阶使用
# 测试文件如下
2019-08-14 12:20:58 INFO 小花 Pass 手机号
2019-08-14 12:20:57 INFO 小花 Pass 邮箱
2019-08-14 12:20:51 ERROR 小刚 Pass 手机号
2019-08-14 12:20:58 ERROR 小刚 Pass 手机号
2019-08-14 12:20:19 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 ERROR 小花 Pass 手机号
2019-08-14 12:20:16 ERROR 小花 Pass 手机号
2019-08-14 12:20:58 INFO 小花 Pass 邮箱
2019-08-14 12:20:46 INFO 小花 Pass 邮箱
2019-08-14 12:20:58 ERROR 小红 Pass 邮箱
2019-08-14 12:20:45 INFO 小红 Pass 邮箱
2019-08-14 12:20:18 CRITICAL 小华 Pass 邮箱
2019-08-14 12:20:58 INFO 小红 Pass 手机号
2019-08-14 12:20:48 INFO 小花 Pass 手机号
2019-08-14 12:20:38 INFO 小花 Pass 手机号
2019-08-14 12:20:54 ERROR 小花 Pass 邮箱
2019-08-14 12:20:36 ERROR 小花 Pass 邮箱
2019-08-14 12:20:28 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:58 ERROR 小刚 Pass 邮箱
2019-08-14 12:20:21 INFO 小刚 Pass 手机号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
打印以上日志文件中1~15行
中的用户(注意这里需要先对1-15行出现的用户名进行去重操作,进行去重操作前还还需要进行排序操作)
[root@aliyun ~]$ head -n 15 case.log | cut -d " " -f 4 | sort | uniq
小刚
小红
小花
小华
1
2
3
4
5
2
3
4
5
# wc(word count)
- 计算文本数量
- 选项
wc -l
打印行数[root@aliyun ~]$ wc -l case.log 20 case.log
1
2wc -w
打印单词数量[root@aliyun ~]$ wc -w case.log 120 case.log
1
2wc -c
打印字节数[root@aliyun ~]$ wc -c case.log 924 case.log
1
2wc -L
打印最长行的字节数[root@aliyun ~]$ wc -L case.log 43 case.log
1
2
编辑 (opens new window)
上次更新: 2023/01/04, 02:34:17
- 01
- Python实现对字符串的加解密02-25
- 02
- Python3对大文件中指定字符进行排序再写入到新的文件10-24
- 03
- Ubuntu下配置adb环境连接Android设备进行调试08-17