egrep、sed、awk 简介与用法
egrep
扩展正则表达式工具,用于文本搜索。支持|、+、?等正则元字符。
关键用法:
egrep "pattern" file搜索文件中匹配模式的行
egrep -v "pattern" file反向匹配(排除模式)
egrep -i "pattern" file忽略大小写
sed
流编辑器,用于文本替换、删除、插入等操作。
关键用法:sed 's/old/new/g' file全局替换文本sed '/pattern/d' file删除匹配行sed -n '5p' file打印第5行-i参数直接修改原文件
awk
文本处理编程语言,支持字段切割和复杂逻辑。
关键用法:awk -F: '{print $1}' /etc/passwd以冒号分隔并打印第一列awk '/pattern/ {action}' file对匹配行执行操作BEGIN和END块处理前后逻辑
Shell 脚本核心概念
变量定义与引用变量名=值(无空格)
引用变量:$变量名或${变量名}
反引号`或$()捕获命令输出
引号区别
双引号"":支持变量扩展
单引号'':纯字符串,不扩展变量
变量类型
- 自定义变量:
a=10 - 环境变量:
$PATH - 位置变量:
$1、$2 - 预定义变量:
$?(上条命令状态码)
实用脚本示例
交互式用户创建脚本
#!/bin/bash read -p "输入用户名: " username read -p "输入密码: " password useradd $username echo "$password" | passwd --stdin $username egrep "^$username" /etc/passwd自动化磁盘分区脚本
#!/bin/bash read -p "输入磁盘设备(如/dev/sdb): " disk read -p "输入分区编号(如1): " part_num read -p "输入挂载点路径(如/data): " mount_point read -p "输入文件系统类型(如xfs/ext4): " fs_type fdisk $disk << EOF n p $part_num +10G w EOF mkfs.$fs_type ${disk}$part_num mkdir -p $mount_point mount ${disk}$part_num $mount_point df -hT | grep $mount_point关键点
- 使用
<< EOF实现非交互式分区 mkfs.$fs_type动态指定文件系统类型df -hT验证挂载结果
注意事项
- 脚本需赋予执行权限:
chmod +x script.sh - 环境变量
$PATH可添加自定义路径:export PATH=$PATH:/your/path - 调试脚本使用
bash -x script.sh
