《鸟哥的Linux私房菜基础篇》---7 正规表示法与文件格式化处理

目录

​2. 正则表达式分类​

​3. 常用符号与示例​

​4. 应用场景与工具​

4. 正则表达式与通配符

​5. 基础正规表示法练习-grep

​6. 注意事项​


在Linux中,​正规表示法​(Regular Expression,简称正则表达式)是一种用于匹配、搜索和操作文本字符串的强大工具。它通过特定的符号和规则组合成模式(Pattern),实现对文本的高效处理。

1. 基本概念

  • 作用​:用于在文件中快速查找、替换或删除符合特定规则的字符串(如邮箱、IP地址等)。
  • 与通配符的区别​:
    • 通配符(如*?)用于匹配文件名(如ls *.txt),而正则表达式处理的是文件内的文本内容(如grep 'pattern' file.txt)。
    • 例如:通配符*匹配任意字符,而正则表达式的*表示前一个字符重复0次或多次。

2. 正则表达式分类

  • 基础正则表达式(BRE)​​:

    • 支持基本符号:^(行首)、$(行尾)、.(任意单字符)、*(重复前字符)、[](字符集合)等。
    • 示例:grep '^hello' file.txt 匹配以hello开头的行。
  • 扩展正则表达式(ERE)​​:

    • 在BRE基础上增加:+(1次或多次)、?(0或1次)、|(或)、()(分组)、{}(次数限定)等。
    • 需使用grep -Eegrep
      grep -E 'go{2,5}d' file.txt  # 匹配`good`、`gooood`等

3. 常用符号与示例

符号作用示例
^匹配行首^abc(以abc开头)
$匹配行尾xyz$(以xyz结尾)
.匹配任意单个字符h.t(匹配hathot
*前字符重复0次或多次a*b(匹配baab
[abc]匹配括号内任意一个字符[aeiou](匹配元音)
\转义特殊字符\.(匹配实际小数点)
|逻辑“或”cat|dog(匹配catdog

4. 应用场景与工具

  • 文本搜索​:grep
    grep -n --color 'error' /var/log/syslog  # 高亮显示错误日志行号
  • 文本替换​:sed
    sed 's/old/new/g' file.txt  # 全局替换`old`为`new`
  • 复杂文本处理​:awk
    awk '/pattern/{print $1}' file.txt  # 打印匹配行的第一列

4. 正则表达式与通配符

正规表达式(正则表达式)和通配符(Wildcard)虽然都用于模式匹配,但它们在功能、语法和应用场景上有显著区别:

(1)功能范围

通配符​:主要用于文件名匹配​(如 ls *.txt),由 Shell 解释,语法简单,仅支持基础符号:

  • *:匹配任意数量字符(包括空字符)。
  • ?:匹配单个任意字符。
  • []:匹配括号内的单个字符(如 [a-z])。
  • 局限性​:无法处理复杂逻辑(如重复次数、分组等)。

正则表达式​:用于复杂文本处理​(如日志分析、数据校验),支持更强大的模式匹配:

  • 元字符​:.(任意字符)、^(行首)、$(行尾)、\d(数字)等。
  • 量词​:*(零次或多次)、+(一次或多次)、{n,m}(重复次数)。
  • 逻辑操作​:|(或)、()(分组)、\1(回溯引用)等

(2)符号含义的差异

  • ​*****​
    • 通配符:匹配任意字符序列(如 *.txt 匹配所有 .txt 文件)。
    • 正则表达式:匹配前一个字符的零次或多次重复(如 a* 匹配 ""aaa 等)。
  • ​**?**​
    • 通配符:匹配单个字符(如 file?.log 匹配 file1.log)。
    • 正则表达式:匹配前一个字符的零次或一次(如 colou?r 匹配 colorcolour

(3)应用场景

  • 通配符适用场景​:

    • 文件操作:rm *.tmp(删除临时文件)、cp /data/*.log ./backup/
    • 简单路径匹配:find /var -name "app_????.conf"
  • 正则表达式适用场景​:

    • 文本提取:grep "\d{3}-\d{4}" access.log(匹配电话号码)。
    • 数据验证:邮箱格式 ^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$
    • 编程处理:Python 的 re 模块、JavaScript 的字段校验等。

(4)性能与复杂度

  • 通配符​:简单高效,适合快速文件匹配,但功能有限。
  • 正则表达式​:功能强大但复杂度高,处理大规模文本时可能有性能开销。

(5)总结

  • 通配符​:文件操作的首选工具(如 Shell 命令)。
  • 正则表达式​:复杂文本处理的核心技术(如编程、日志分析)。
    口诀​:​​“文件操作用通配,文本处理靠正则”​​。

5. 基础正规表示法练习-grep

grep 已经使用 alias 设定成为『 grep --color=auto 』

​6. 注意事项​

  • 区分大小写​:默认大小写敏感,可用grep -i忽略。
  • 语系影响​:建议设置LANGCLC_ALL=C避免字符集问题。
  • 贪婪匹配​:.*会匹配尽可能长的字符串,非贪婪模式用.*?(需工具支持)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值