欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > SHELL 编程正则表达式

SHELL 编程正则表达式

2025/6/19 19:00:30 来源:https://blog.csdn.net/2401_82583394/article/details/148635334  浏览:    关键词:SHELL 编程正则表达式
一、自动磁盘分区与挂载

核心工具fdisk(分区)、mkfs(格式化)、mount(挂载),结合expect实现自动化交互。
脚本关键点

  • 使用expect脚本模拟交互式输入(如n创建分区、p主分区、wq保存)。
  • 示例命令:
expect << EOF  
spawn fdisk /dev/sdc  
expect "命令*" {send "n\r"}  
# 后续依次响应分区类型、大小等提示  
expect eof  
EOF  

二、批量用户创建与管理

场景:通过expect远程批量创建用户到多台主机。
脚本核心

  • 使用ssh远程连接,useradd创建用户,passwd --stdin设置密码。
  • 示例片段:
expect << EOF  
spawn ssh root@10.0.0.12  
expect "password" {send "123456\n"}  
expect "]#" {send "useradd jack\n"}  
expect "]#" {send "echo 123456 | passwd --stdin jack\n"}  
EOF  

三、正则表达式基础
1. 字符匹配
  • 单字符匹配
    • .:任意单个字符(如st..e匹配state)。
    • []:指定范围内字符(如[a-z]匹配小写字母)。
    • [^]:范围外字符(如[^0-9]匹配非数字)。
  • 示例
grep '[s-t]' file  # 匹配包含s到t之间字母的行  

2. 锚定匹配
  • 位置限定
    • ^:行首(如^user匹配以 user 开头的行)。
    • $:行尾(如\.conf$匹配以.conf 结尾的行)。
    • \</\>:单词首尾(如\<root\>匹配独立单词 root)。
  • 示例
grep '^[a-z]' file  # 匹配以小写字母开头的行  
3. 分组与限定
  • 分组:用()提取匹配内容,\1引用第一组,\2引用第二组。
egrep '(server\.[0-9])' config  # 提取server.x格式内容  
  • 次数限定
    • *:任意次(如ab*c匹配 ac、abc、abbbc)。
    • +:至少 1 次(如ab+c匹配 abc、abbbc)。
    • {m,n}:m 到 n 次(如ab{2,4}c匹配 abbbc)。

四、扩展正则与应用
1. 特殊字符集
  • 预定义字符集
    • [:alnum:]:字母 + 数字,[:digit:]:数字,[:lower:]:小写字母。
  • 示例
grep "[[:digit:]]{3}" file  # 匹配3位数字  
2. 实际应用场景
  • IP 地址验证
    egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' ip.txt  # 简单IP格式匹配  
    
  • 网址验证
    egrep '^http(s)?://[a-z0-9]+\.[a-z]{2,5}$' url.txt  
    
  • 手机号 / 邮箱验证
    egrep '^1[3-9][0-9]{9}$' phone.txt  # 手机号格式  
    egrep '^[a-z]+@[a-z]+\.[a-z]{2,5}$' email.txt  # 邮箱格式  
    

    五、自动化检测脚本

    核心逻辑

  • 定义正则表达式验证输入格式(IP、网址、手机号等)。
  • 使用expectshell命令(如pingcurl)检测目标存活。
  • 示例功能:
    • 主机存活检测:ping -c1 -W1 IP
    • 网站可用性检测:curl -s -o /dev/null URL

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词