Linux中的shell正则表达式详解
Shell中使用正则表达式处理文本的命令有如下工具:
命令 | 描述 |
---|---|
grep
|
默认不支持扩展表达式,加-E 选项开启ERE。如果不加-E ,此时使用花括号时要加转义符:\{\}
|
egrep
|
支持基础和扩展表达式 |
awk
|
支持基础和扩展表达式 |
sed
|
默认不支持扩展表达式,加-r 选项开启ERE。如果不加-r ,此时使用花括号时要加转义符:\{\}
|
注:-E
选项为扩展的正则表达式:支持+、?、|、()
.
匹配除换行符(\n)之外的任意单个字符
echo -e "123\n456" | grep "1.3" # 显示 123
^
匹配以xxx字符(串)开头所在的行
echo -e "abc\nxyz" | grep "^ab" # 显示 abc
$
匹配以xxx字符(串)结尾所在的行
echo -e "abc\nxyz" | grep "z$" # 显示 xyz
*
匹配前一个字符0个或多个
echo -e "x\nxo\nxoo\no\noo" |grep "xo*" # 显示 x/xo/xoo
+
匹配前一个字符1个或多个
# grep -E 该选项为拓展的正则表达式,支持 + ? | 和 ()
echo -e "abc\nabbc\nac" | grep -E "ab+c" # 显示 abc/abbc
?
匹配前一个字符0个或1个
echo -e "abc/abbc/ac" | grep -E "ab?c" # 显示 abc/ac
[ ]
匹配中括号中的任意一个字符
echo -e "abd\ncdf\nghj" | grep "[ac]" # 显示 abd/cdf
[.-.]
匹配中括号中范围内的任意一个字符
echo -e "abc\nxyz" | grep "[a-z]" # 显示 abc/xyz
[^.]
匹配非中括号中字符(串)之外的任意一个字符(串)
echo -e "a\nb\nc" | grep "[^a]" # 显示 b/c
^[^.]
匹配以非中括号中字符(串)开头的行
echo -e "abc\nxyz" | grep "^[^a]" # 显示 xyz
{n,}或{n}
匹配前面的字符至少 n次
echo -e "abc\nabcc\nabccc\nabcccc" | grep -E "c{2}" # 显示 abcc/abccc/abcccc
{n,m}
匹配前面的字符至少 n次至多m次
# -w 只选择与整个单词相匹配的行
# 注意m与前面的逗号之间没有空格
echo -e "abc\nabcc\nabccc\nabcccc" | grep -E -w "abc{2,3}" # 显示 abcc/abccc
\<
边界符,匹配行的开始
# 匹配以ab开始的行
echo -e "abc\nabcc\ncab" | grep -E "\<ab" # 显示 abc/abcc
\>
边界符,匹配行的结尾
# 匹配以ab结束的行
echo -e "abc\nabcc\ncab" | grep -E "bc\>" # 显示 abc
|
匹配竖杠两边两个字符中的任意一个
echo -e "a\nb\nc" | grep -E "b|c" # 显示 b/c
\
转义符,将特殊符号转成字面意义上的字符
echo -e "1.2" | grep -E "1\.2" # 显示 1.2
Posix字符
Posix字符 | 描述 |
---|---|
[:alnum:]
|
等效于[a-zA-Z0-9]
|
[:alpha:]
|
等效于[a-zA-Z]
|
[:lower:]
|
等效于[a-z]
|
[:upper:]
|
等效于[A-Z]
|
[:digit:]
|
等效于[0-9]
|
[:lower:]
|
等效于[a-z]
|
[:space:]
|
匹配任意空白字符,等效于[\t\n\f\v]
|
[:graph:]
|
非空白字符 |
[:blank:]
|
空格与定位字符 |
[:contrl:]
|
控制字符 |
[:print:]
|
可显示的字符 |
[:punct:]
|
标点符号字符 |
[:xdigit:]
|
十六进制 |
示例 |
echo -e "123\n1234a" | grep "[[:digit:]]" # 匹配所有包含数字的行
|
支持的特殊字符 | 描述 |
---|---|
\w
|
匹配任意数字和字母, 等效于[a-zA-Z0-9_]
|
\W
|
与\w 相反,等效于[^a-zA-Z0-9_]
|
\b
|
匹配字符串开始或结束,等效于\< 和\>
|
\s
|
匹配任意的空白字符 |
\S
|
匹配任意的非空白字符 |
示例 |
echo -e "Hello\n123" | grep "\w" # 匹配Hello和123
|
空白符 | 描述 |
---|---|
\n
|
换行符 |
\r
|
回车符 |
\t
|
水平制表符 |
\v
|
垂直制表符 |
\0
|
空值符 |
\b
|
退格符 |
参考:《Shell入门到精通》作者:李振良
Linux中的shell正则表达式详解相关推荐
- linux etc passwd权限,Linux中/etc/passwd配置文件详解
原标题:Linux中/etc/passwd配置文件详解 /etc/passwd文件: 系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读(r)操作. 查看文件内容: / ...
- Linux中的ps指令详解
[时间]2018.12.16 [题目]Linux中的ps指令详解 转载地址:https://www.cnblogs.com/exe19/p/5511733.html 概述 要对进程进行监测和控制,首先 ...
- linux cut命令学习,Linux中的cut 命令详解
今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...
- linux bin fuser,Linux中fuser命令用法详解
描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...
- 在Linux中ipcs命令,linux中ipcs命令使用详解
linux中ipcs命令使用详解 用途 报告进程间通信设施状态. 语法 代码如下: ipcs [-mqs] [-abcopt] [-C core] [-N namelist] -m 输出有关共享内存( ...
- 学习转载:Android中常用shell命令详解
https://blog.csdn.net/Z_HUALIN/article/details/77878609 设置adb环境变量 其实就是将adb.exe的路径放到Path中,目的是cmd直接可以使 ...
- 6.Linux中vi/vim编辑器详解
文章目录 前言 一.vim/vi 介绍 二.vi/vim学习图(初级) 三.文本编辑(状态)概览 四.使用vi打开文本的方式 五.命令模式 1.进入插入模式(进行文本编辑) 2.从插入模式切换为命令行 ...
- 【linux】linux中fork()详解(实例讲解)|fork的运行机制
目录 linux中fork()函数详解 从一道面试题谈linux下fork的运行机制 linux中fork()函数详解 原文:linux中fork()函数详解(原创!!实例讲解)_jason314的博 ...
- Linux中top命令参数详解、常用快捷键
1.命令 1.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 显示系统当前的进程和其他状况: top是一个动态显示过程 ...
最新文章
- 深度学习中的优化算法串讲
- Python的3种字符串格式化,做个超全对比!
- iis7 上传限制问题
- fragment嵌套,viewpager嵌套 不能正确显示
- python实现k core算法_python实现k-近邻算法
- centos7网卡配置文件详解与固定服务器ip
- 使用模块优化工资计算器
- 【项目管理】项目启动阶段 -- 制定项目章程
- Jemalloc安装
- 【2013年总结】思维跌宕起伏,生命颠簸曲折的一年
- 传奇世界私服务器端制作,传奇世界单机版一键端带服务器附带安装教程。(可局域网)...
- 2006设计师必备网址全集
- 使用爬虫爬取天气历史数据(https://lishi.tianqi.com/)
- golang日志库zerolog使用记录
- 第四章:3ds max样条线建模
- python matplotlib 绘制布林带
- 苹果手机各种型号图片_苹果平板电脑图片欣赏及各型号介绍【图文】
- 纠结了五年,华为要动智能电视了?
- SAP维护币种间汇率前的币种间的汇况比例维护实例
- AI Challenger 全球AI挑战赛[二]——场景分类比赛介绍(附数据集和基线模型百度云下载)
热门文章
- Linux编译程序源码环境,Linux下对nodejs环境进行源码编译并部署云应用
- c#读取整数空格_C ++程序声明,读取和打印动态整数数组
- Java中实现定时任务的3种方法!
- nginx php mysql一些常用命令(windows linux)
- C#中其他简单LINQ查询表达式的简单使用介绍
- adaptivitypara设置选0还是1_喝牛奶,选全脂还是低脂?家里人能不能喝同1种牛奶?...
- 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...
- django使用mysql事务处理_Django中MySQL事务的使用
- 鸿蒙空间是什么星辰变,飞升之后做什么《星辰变》神魔妖界收伏奇珍异兽
- java编写通信录管理系统_Java 实现通讯录管理系统教程