目录
一、正则表达式
1、匹配字符的类型
2、后跟以下符号控制匹配的数量
3、将匹配的字符控制在头尾
二、Linux三大文本处理工具
1、egrep 筛选工具
语法:
选项
2、sed 流编辑器
定位:
命令:
3、awk 文本分析工具
语法
逻辑运算(可直接引用域进行运算)
转义序列
首页 运维 linux运维 正则表达式

正则表达式

Jul 21, 2017 am 10:03 AM
linux 文本 表达式

一、正则表达式

1、匹配字符的类型

  • [a-z]:小写字母

  • [A-Z]:大写字母

  • [a-Z]:小或大写字母

  • [0-9]:数字

  • [a-zA-Z0-9]:表示匹配一个为字母或数字的字符

  • . :匹配1个任意字符,空格除外 

  • [0-f]:16进制数

  • abc | def:abc或def

  • a (bc | de) f:abcf 或 adef

  • \<:单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词

  • \>:单词尾

  • [^表达式]:除小写字母以外的所有字符,如此类推。

2、后跟以下符号控制匹配的数量

此类符号的左侧要有上面第一点的表达式

  • 表达式*:0或n个字符

  • 表达式+:1或n个字符

  • 表达式?:0或1个字符

  • 表达式{n}:n个字符

  • 表达式{n:m}:n到m个字符

  • 表达式{n,}:至少n个字符

【例】[a-z]*表示匹配0个或多个小写字母

3、将匹配的字符控制在头尾

  • ^表达式:头部符合

  • 表达式$:尾部符合

 

二、Linux三大文本处理工具

1、egrep 筛选工具

grep的扩展版,可以使用正则表达式

语法:

egrep -选项  '正则表达式'  文件名

选项:

  • -n :显示行号

  • -o :只显示匹配的内容

  • -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

  • -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

  • -A :如果匹配成功,则将匹配行及其后n行一起打印出来

  • -B :如果匹配成功,则将匹配行及其前n行一起打印出来

  • -C :如果匹配成功,则将匹配行及其前后n行一起打印出来

  • --color

  • -c :如果匹配成功,则将匹配到的行数打印出来

  • -i :忽略大小写

  • -v :取反,不匹配

  • -w:匹配单词

2、sed 流编辑器

语法:

语法1:sed  -选项  '数字定位+命令'  文件名

选项:

  • -n:静默模式,不输出

  • -e:多项编辑,这个不是很清楚

  • -i:直接修改文件内容,而不是输出

  • -r:扩展模式,可使用正则表达式

  • -f:指定文件名,将动作写在新的文件内

定位:

①数字定位(输入行序号定位)

  • 1:单行 

  • 1,3:范围 从第一行到第三行

  • 2,+4:匹配行后若干行

  • 4,~3:从第四行到下一个3的倍数行

  • 2~3:第二行起每间隔三行的行

  • $:尾行

  • 1!:除了第一行以外的行

【例】sed -n '1p' /etc/passwd

②正则表达式定位

  • 正则必须用//包裹起来

  • 扩展正则需要用 -r 参数或转义

  • 替换可使用正则表达式的子模式,即小括号(),可以\1、\2代表子模式

【例】sed -r 's/(.)(.)/\2\1/ file1 表示将匹配到的第一部分和第二部分替换

*贪婪选项:填上g,代表把一行中所有匹配项替换

命令:

  • a ∶ 追加append, 

  • c ∶ 改变change, 

  • d ∶ 删除delete,

  • i ∶ 插入insert, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

  • p∶ 列印print

  • s∶ 取代substitute,可以直接进行替换的工作。通常这个 s 的动作可以搭配正则表达式。例如 1,20s/old/new/g

*s命令特别说明:

使用{命令1:命令2:命令3}可增加使用多个命令

s命令语法:sed  -r  '替换命令s/正则表达式/替换内容/贪婪选项g'  文件名

3、awk 文本分析工具

由命令、正则(需要用//包围起来)、比较和关系运算组合而成

使用option中的-F参数定义间隔符号

用$1,$2,$3等的顺序表示files中每行以间隔符号分隔的各列不同域,NF变量表示当前记录的字段数

语法

awk -选项 参数  '逻辑判断{命令 变量1,变量2,变量3}' 文件名

选项

  • -F 定义字段分隔符,默认的分隔符是连续的空格或制表符

  • -v 定义变量并赋值 也可以借用次方式从shell变量中引入

AWK变量

  • NR 当前记录的个数(全部文件连接后的统计)

  • FNR 当前记录的个数(仅为当前文件的统计,非全部)

  • FS 字段分隔符 默认为连续空格或制表符,可以使用多个不同的符号做分隔符 -F[:/]

  • OFS 输出字符的分隔符 默认是空格

【OFS例】

# awk -F: 'OFS="=====" {print $1,$2}' /etc/passwd
root=====x

  • NF 当前读入行的字段个数

  • ORS 输出记录分隔符 默认是换行

【ORS例】

# awk -F: 'ORS="=====" {print $1,$2}' /etc/passwd
root x=====bin x=====

  • FILENAME 当前文件名

【例1】使用AWK变量
# awk '{print NR,FNR,$1}' file1 file2 
1 1 aaaaa
2 2 bbbbb
3 3 ccccc
4 1 dddddd
5 2 eeeeee
6 3 ffffff
# 

【例2】引用shell变量的方法

# a=root
# awk -v var=$a -F: '$1 == var {print $0}' /etc/passwd
或者 把整个命令拆开传递,让shell变量外露,
# awk -F: '$1 == "'$a'" {print $0}' /etc/passwd
# a=NF
# awk -F: '{print $'$a'}' /etc/passwd

 

逻辑运算(可直接引用域进行运算)

  • = += -= /= *=:赋值

  • && || !:逻辑与 逻辑或 逻辑非

  • ~ !~:匹配正则或不匹配,正则需要用 /正则/ 包围住

  • < <= > >= != ==:关系,比较字符串时要把字符串用双引号引起来

  • $:字段引用需要加$,而变量引用直接用变量名取

  • + - * / % ++ --:运算符

转义序列

  • \\ \自身

  • \$ 转义$

  • \t 制表符

  • \b 退格符

  • \r 回车符

  • \n 换行符

  • \c 取消换行

  

有错误请指正,更多详细资料参考:


以上是正则表达式的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

vscode 无法安装扩展 vscode 无法安装扩展 Apr 15, 2025 pm 07:18 PM

VS Code扩展安装失败的原因可能包括:网络不稳定、权限不足、系统兼容性问题、VS Code版本过旧、杀毒软件或防火墙干扰。通过检查网络连接、权限、日志文件、更新VS Code、禁用安全软件以及重启VS Code或计算机,可以逐步排查和解决问题。

notepad怎么运行java代码 notepad怎么运行java代码 Apr 16, 2025 pm 07:39 PM

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

vscode 可以用于 mac 吗 vscode 可以用于 mac 吗 Apr 15, 2025 pm 07:36 PM

VS Code 可以在 Mac 上使用。它具有强大的扩展功能、Git 集成、终端和调试器,同时还提供了丰富的设置选项。但是,对于特别大型项目或专业性较强的开发,VS Code 可能会有性能或功能限制。

vscode是什么 vscode是干什么用的 vscode是什么 vscode是干什么用的 Apr 15, 2025 pm 06:45 PM

VS Code 全称 Visual Studio Code,是一个由微软开发的免费开源跨平台代码编辑器和开发环境。它支持广泛的编程语言,提供语法高亮、代码自动补全、代码片段和智能提示等功能以提高开发效率。通过丰富的扩展生态系统,用户可以针对特定需求和语言添加扩展程序,例如调试器、代码格式化工具和 Git 集成。VS Code 还包含直观的调试器,有助于快速查找和解决代码中的 bug。

VSCode怎么用 VSCode怎么用 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) 是一款跨平台、开源且免费的代码编辑器,由微软开发。它以轻量、可扩展性和对众多编程语言的支持而著称。要安装 VSCode,请访问官方网站下载并运行安装程序。使用 VSCode 时,可以创建新项目、编辑代码、调试代码、导航项目、扩展 VSCode 和管理设置。VSCode 适用于 Windows、macOS 和 Linux,支持多种编程语言,并通过 Marketplace 提供各种扩展。它的优势包括轻量、可扩展性、广泛的语言支持、丰富的功能和版

Linux的主要目的是什么? Linux的主要目的是什么? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

git怎么查看仓库地址 git怎么查看仓库地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 仓库地址,请执行以下步骤:1. 打开命令行并导航到仓库目录;2. 运行 "git remote -v" 命令;3. 查看输出中的仓库名称及其相应的地址。

See all articles