一、正规表示法的理论与实践

1.1 grep 指令的应用范式

grep 作为基于正规表示法的基础文本搜索工具,通过 grep [选项] 模式 文件名 的语法结构实现文本匹配功能。在系统配置文件检索场景中,命令 grep -n student /etc/passwd 可精准定位包含 "student" 字符串的行,并输出行号信息。面对系统日志数据处理需求,如筛选 dmesg 命令输出的网卡 ens3 相关日志,可采用管道技术结合选项参数实现:dmesg | grep -n -i ens3。此外,-A-B 选项支持上下文信息输出,-v 选项则实现反向匹配,例如 df | grep -v tmpfs 可过滤掉临时文件系统信息,聚焦常规文件系统数据展示。

1.2 正规表示法的符号语义体系

正规表示法通过特定元字符构建强大的模式匹配规则:

  • 定位符^ 匹配行首,$ 匹配行尾,如 grep -n '^#' regular_express.txt 可检索注释行
  • 通配符. 匹配任意单个字符,\ 用于转义特殊字符
  • 重复限定符* 匹配零个或多个前导字符,\{n,m\} 实现精确重复次数控制
  • 字符集合[] 定义字符类,[a-z] 表示小写字母集,[^abc] 实现反向选择
  • 预定义字符类[:alnum:] 匹配字母数字字符,[:digit:] 匹配数字字符

通过对 /etc/services 等系统文件的模式匹配实践,可系统掌握各符号的组合应用逻辑。

1.3 sed 流编辑器的高级应用

sed(Stream Editor)工具支持基于正规表示法的文本替换与流处理:

  • 字符串替换:采用 s/旧模式/新模式/[g] 语法,如 ifconfig | sed 's/.*inet //;s/ .*//' 可提取 IP 地址
  • 行操作sed -n '10,15p' /etc/passwd 实现指定行范围输出
  • 文件修改:添加 -i 选项可直接修改文件内容,但需谨慎使用以避免数据丢失

通过对 /etc/passwd 文件的批量处理实践,可深入掌握 sed 工具的编辑功能。

二、shell script 编程实践

2.1 脚本编写规范与执行机制

shell script 的编写需遵循严格的语法规范,包括指令顺序控制、空白字符处理、注释规范(# 开头)及长行延续(\ 符号)。脚本执行存在多种模式:

  1. 权限执行:通过 chmod +x myid.sh 赋予执行权限后,使用绝对路径或相对路径调用
  2. 环境变量执行:将脚本所在目录添加至 PATH 环境变量
  3. 解释器执行:使用 bash myid.shsh myid.sh 直接调用

不同执行方式对脚本运行环境(如变量作用域、工作目录)存在显著影响,需通过实践深入理解。

2.2 脚本执行环境分析

shell script 的执行环境直接影响其运行结果:

  • 子进程执行:直接执行脚本将创建新的 shell 子进程
  • 当前环境执行:使用 source. 命令可在当前 shell 环境中执行脚本,实现环境变量与函数的有效继承

通过 gototmp.sh 等测试脚本,可直观观察不同执行方式对工作目录、变量作用域的影响机制。

2.3 交互式脚本与参数传递

  • 交互式脚本:通过 read 命令实现用户输入交互,如 mypi.sh 脚本可根据用户输入的计算精度执行圆周率计算
  • 参数传递:使用 $1$2 等位置参数实现非交互式参数传递,mypi2.sh 脚本通过命令行参数控制计算精度

通过 listcmd.shlistcmd2.sh 脚本实践,可掌握不同参数传递方式的应用场景。

2.4 if...then 条件判断结构

if...then 语句用于实现脚本逻辑控制:

1
2
3
4
5
6
7
if [ 条件表达式 ]; then
命令序列
elif [ 条件表达式 ]; then
命令序列
else
命令序列
fi

mypi.sh 脚本中引入输入合法性检查,可有效处理非法输入情况,提升脚本健壮性。

2.5 case...esac 多路分支结构

当存在多条件判断场景时,case...esac 结构提供更简洁的实现方式:

1
2
3
4
5
6
7
8
9
10
11
case $变量 in
模式1)
命令序列
;;
模式2)
命令序列
;;
*)
默认处理
;;
esac

通过对 mypi3.shmypi4.sh 脚本的改造实践,可掌握复杂分支逻辑的实现方法。

三、延伸型正规表示法应用

延伸型正规表示法通过 egrep 工具实现更强大的模式匹配能力,新增符号包括:

  • +:匹配一个或多个前导字符
  • ?:匹配零个或一个前导字符
  • |:实现逻辑或运算
  • ():分组操作

典型应用如 egrep -v '^$|^#' /etc/crontab 可一次性去除空白行与注释行,显著提升文本处理效率。通过具体案例实践,可掌握延伸型正规表示法在复杂数据清洗场景中的应用技巧。