文本三剑客以及一键安装类脚本编写

# Linux文本处理三剑客与Shell编程实战指南---## 一、正则表达式核心语法### 1. 元字符速查表| 元字符 | 功能说明 | 示例||-----

# Linux文本处理三剑客与Shell编程实战指南

---

## 一、正则表达式核心语法

### 1. 元字符速查表
| 元字符 | 功能说明                     | 示例                  |
|--------|------------------------------|-----------------------|
| `^`    | 匹配行首                     | `^root` 匹配以root开头的行 |
| `$`    | 匹配行尾                     | `bash$` 匹配以bash结尾的行 |
| `+`    | 前导字符出现**1次或多次**    | `a+` 匹配a、aa等       |
| `?`    | 前导字符出现**0次或1次**     | `ab?` 匹配a或ab        |
| `{n}`  | 前导字符出现**精确n次**      | `ab{2}` 匹配abb        |
| `.*`   | 匹配任意字符(贪婪模式)     | `x.*y` 匹配x和y之间的任意内容 |

### 2. 经典案例
```bash
# 匹配16字母单词(需处理大小写)
egrep "\b[a-zA-Z]{16}\b" /var/log/messages

# 过滤空行和注释行
grep -v '^#\|^$' /etc/passwd

# 匹配域名格式(如http://www.baidu)
egrep "[a-zA-Z]+://[a-zA-Z0-9]+\.[a-zA-Z]+(\.[a-zA-Z]+)+" file

二、文本处理三剑客深度解析

1. grep:模式搜索利器

常用选项

  • -i:忽略大小写
  • -r:递归搜索目录
  • -A3:显示匹配行后3行
  • -E:启用扩展正则(等同于egrep

实战场景

# 查找Java异常日志(包含ERROR关键字及后续3行)
grep -A3 -i "ERROR" /var/log/java.log

2. awk:数据流处理大师

核心语法

awk -F 分隔符 'BEGIN{初始化} /模式/{动作} END{收尾}' 文件

内置变量

  • NR:当前行号
  • NF:当前行字段数
  • $0:整行内容
  • $1:第一个字段

高阶案例

# 统计用户进程CPU占用TOP5
ps aux | awk 'NR>1 {print $2, $3, $11}' | sort -k2 -nr | head -5

# 提取IP地址(多分隔符处理)
ip addr | awk -F "[ /]" '/ens33$/{print $3}'

3. sed:流编辑器

核心操作

  • s/old/new/g:全局替换
  • d:删除行
  • p:打印行
  • i\:插入内容到行前

实战案例

# 批量注释SELinux配置行
sed -i '/^SELINUX=/ s/^/#/' /etc/selinux/config

# 提取特定时间段的日志
sed -n '/18\/Dec\/2021:16:55:48/,/18\/Dec\/2021:17:26:30/p' access.log

三、Shell脚本编程实战

1. 系统配置管理脚本

功能:动态配置主机名/IP,支持菜单交互

#!/bin/bash
set_hostname() {
    read -p "请输入主机名:" hostname
    hostnamectl set-hostname "$hostname"
}

set_ip() {
    read -p "请输入IP地址:" ip
    sed -i "/^IPADDR=/c IPADDR=$ip" /etc/sysconfig/network-scripts/ifcfg-ens33
}

# 菜单驱动
while true; do
    echo "1. 配置主机名 | 2. 配置IP | 3. 退出"
    read -p "请选择:" opt
    case $opt in
        1) set_hostname ;;
        2) set_ip ;;
        3) exit ;;
    esac
done

2. 一键编译安装Nginx

功能:自动化下载、编译、配置Nginx服务

#!/bin/bash
# 安装依赖
yum install -y gcc pcre-devel openssl-devel

# 下载源码
wget https://nginx/download/nginx-1.26.3.tar.gz
tar -xvf nginx-1.26.3.tar.gz
cd nginx-1.26.3

# 编译配置
./configure --prefix=/usr/local/nginx \
            --with-http_ssl_module \
            --with-http_v2_module

make -j$(nproc) && make install

# 环境配置
echo 'PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile
source /etc/profile

# 启动服务
nginx && echo "Nginx启动成功!"

3. 系统资源监控脚本

功能:实时检测CPU使用率并告警

#!/bin/bash
LOG="/var/log/cpu_monitor.log"
CPU_USED=$(top -bn1 | awk '/%Cpu/ {print 100-$8}')

if (( $(echo "$CPU_USED >= 80" | bc) )); then
    echo "[$(date)] CPU使用率过高:${CPU_USED}%" >> $LOG
    # 发送邮件或通知(需配置邮件服务)
fi

四、Shell进阶技巧

1. 数组操作

# 定义数组
songs=("Song1" "Song2" "Song3")

# 随机抽取元素
index=$((RANDOM % ${#songs[@]}))
echo "今日推荐歌曲:${songs[$index]}"

2. 算术运算

# 浮点数计算(保留2位小数)
echo "scale=2; 22/7" | bc  # 输出3.14

# 随机数生成(1-100)
secret=$((RANDOM % 100 + 1))

五、总结

正则表达式与grepawksed是Linux运维的基石工具。通过脚本自动化,可显著提升日志分析、系统配置等任务的效率。

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754861973a5209259.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信