linux--shell正则
发布日期:2021-05-14 12:19:30 浏览次数:15 分类:精选文章

本文共 1227 字,大约阅读时间需要 4 分钟。

正则表达式(grep/egrep)

正则表达式是对字符串操作的一种逻辑公式。通过事先定义的特定字符和字符组合,用户可以创建一个“规则字符串”,用于对文本进行过滤和提取。

正则表达式资料

正则表达式语法概述

  • .:匹配任意字符
  • *:前一个字符出现0次或多次
  • +:前一个字符出现1次或多次
  • ?:前一个字符出现0次或1次
  • ?=:前一个字符出现0次到一次,取消贪婪模式
  • *?:匹配任意多个任意字符,使用非贪婪模式
  • []:匹配集合中的单个字符,括号内为集合
  • [a-z]:匹配小写字母
  • ^:匹配字符串开头
  • $:匹配字符串结尾
  • [^……]:否定集合,匹配不在括号内的字符
  • |:匹配竖线左边或右边的任何一个
  • \:表示转义字符
  • \n:匹配换行符
  • analogous:前一个表达式匹配n次到m次
  • \q:将括号内的内容存储在“保留空间,最大存储9个”
  • #:调用保留空间中的内容

常用示例

# 查找包含"root"或"ost"的行grep "root|ost" /tmp/passwd# 查找包含数字0-9的行grep [0-9] /tmp/passwd# 匹配以“root”开头的行grep ^root /tmp/passwd# 匹配以“bash”结尾的行grep bash$ /tmp/passwd# 查找数字0出现1次或2次的行grep '0{1,2}' /tmp/passwd# 查找包含“root:”开头且以:“root”结尾的行grep "\(root\).*\1" /tmp/passwd# 匹配空白行grep ^$ /tmp/passwd# 匹配非空白行grep -v ^$ /tmp/passwd

显示前后行

  • -A:匹配结果之后的行
  • -B:匹配结果之前的行
  • -C:匹配结果之前和之后的n行
  • seq 10 | grep 5 -B 4
  • seq 10 | grep 5 -A 2
  • seq 10 | grep 5 -C 2

拓展正则表达式

  • {n,m}:前一个字符重复出现n次到m次
  • +:至少出现一次
  • ?:出现0次或1次
  • ():逻辑或
# 查找数据0出现1次或2次的行grep '0{1,2}' /tmp/passwd

cut命令切分文件

  • 按列切分文件,适用于处理CSV文件或空格分隔文件。
# 提取指定字段cut -f 2,3 student_data.txt# 禁止原样打印cut -f 2 -s test.txt# 显示未提取的字段cut -f 1 --complement student_data.txt# 指定不同的分隔符cut -d ";" -f 1 head -5 /tmp/passwd

cut命令补充说明

  • -c:按字符切分文件
  • -c 2-5:提取第2到第5个字符
  • --output-delimiter:设置输出时的分隔符
cut -c2-5 a.txt --output-delimiter "----"
上一篇:linux--shell Awk
下一篇:linux--shell Test

发表评论

最新留言

很好
[***.229.124.182]2025年04月09日 04时19分31秒