文本处理是Shell中的一个重要领域,它允许你从文本数据中提取有用的信息,执行搜索、替换、格式化和过滤等操作。这对于日志分析、数据清洗、配置文件管理等任务非常有用
Shell中常用的文本处理工具有:cat
、find
、grep
、sed
、awk
、sort
、uniq
、tr
、cut
、paste
、wc
等
1、cat指令
cat
(Concatenate)指令主要用于查看文件内容或将多个文件连接并打印到标准输出设备上
cat
指令的功能包括但不限于:
- 查看文件内容:
cat file
将指定文件的内容输出到终端上 - 连接/合并文件:
cat file1 file2
将file1
和file2
的内容连接起来,并将结果输出到终端上
cat
指令的语法格式如下:
cat [选项] 文件列表
常用选项如下:
- -n:显示行号(在输出的每行前面添加行号)
- -b:显示行号(只在非空行前面添加行号)
- -s:当有多个连续空行时,只显示一个空行
以下是一些示例:
# 显示文件内容,并在每行前面添加行号
cat -n file.txt
# 将file1和file2的内容合并输出到file3中
cat file1.txt file2.txt > file3.txt
2、find指令
find
指令主要用于在指定目录下递归查找文件和目录,它可以使用不同的选项来过滤和限制查找结果
find
指令的语法格式如下:
find [路径] [选项] [动作]
- 路径:要查找的目录路径,多个路径之间用空格分隔,默认为当前目录
- 选项:常用选项及其匹配条件如下:
- -name pattern:按文件名查找,支持使用通配符
*
和?
,默认区分大小写,忽略大小写使用-iname
- -type type:按类型查找,包括
f
(普通文件)、d
(目录)等 - -maxdepth depth:指定查找深度,默认递归查找
- -regex regex:指定正则查找,默认区分大小写,忽略大小写使用
-iregex
- -size size:按文件大小查找,
+/-
表示大于或小于指定大小,单位包括k(KB)、M(MB)或 G(GB)等 - -perm perm:按权限查找,例如755权限
- -name pattern:按文件名查找,支持使用通配符
- 动作:筛选匹配到的文件执行过的操作,例如n分钟内被修改过
以下是一些示例:
# 按类型查找:递归查找指定目录下的所有文件
find 目录 -type f
# 按文件名查找:递归查找指定目录下的所有.txt文件
find 目录 -type f -name "*.txt"
# 按文件名查找(忽略大小写)
find 目录 -type f -iname file.txt
# 查找指定目录下的所有非file.txt文件
find 目录 -type f ! -iname file.txt
# 指定搜索深度查找
find 目录 -maxdepth 1 -type f
# regex正则查找,iregex忽略大小写正则查找
find 目录 -maxdepth 1 -iregex ".*\(\.txt\|\.log\)$"
# 按文件大小查找:递归查找指定目录下大于1M的文件(小于1M:-1M,等于1M:1M)
find 目录 -type f -size +1M
# 按权限查找:递归查找指定目录下755权限的文件
find 目录 -type f -perm 755
# 查找最近7天被修改过的文件
find 目录 -type f -mtime -7
3、grep指令
grep
(Global Regular Expression Print)指令是一个强大的文本搜索工具,它可以使用正则表达式来搜索匹配的行
grep
指令的语法格式如下:
grep [选项] pattern 文件列表
- pattern:要查找的字符串或正则表达式
- <