正则表达式学习

正则表达式学习笔记

概述

正则表达式是普通字符和特殊字符的合集。其具体的载体命令有:awk sed grep。系统自带的所有大的文本过滤工具在某种模式下都支持正则表达式的使用,并且还包括一些扩展的元字符集。

基础

基本组成

例子

sed命令

不会改变原来的字符串。

grep命令

格式

1
2
3
4
5
grep [选项] pattern file1 file2 ...

pattern:可以是正则表达式(用单引号括起来)、或字符串(加双引号)、或一个单词。

注意的是:**文件必须要放在最后面**

常用的选项

1
2
3
4
5
6
7
8
9
10
11
12
-l:查询多个文件时,只输出包含匹配模式的文件的文件名
-r:递归读取文件夹下的文件
-i:不区分大小写
-n:显示行号
-s:不显示错误信息
-f:指定一个需要搜索的文件
-d:如果传输给grep命令的文件中有目录话,需要使用这个选项这个选项还对应了三个操作;
grep -d [ACTION] directory_name
其中 ACTION 可以是
read:把目录文件当作普通文件来读取
skip:目录将被忽略而跳过
recurse:递归的方式读取目录下的每一个文件,可以用选项 "-r" 代替 "-d recurse"

例子

关于某个字符连续出现次数的匹配

1
2
3
grep 'ol\{2\}' hello #ol出现2ci的满足要求
grep 'ol\{2,\}' hellp #ol至少出现两次的满足要求
gerp 'ol\{2,5\}' hellp #ol出现2-5次之间的次数都满足要求

grep搜索文件夹

1
grep -rl  "nihao" doc/

其他例子


sed命令

概述

sed命令是一个流处理命令,其不会改变文本的文件内容。

sed的工作原理

sed 逐行处理文件(或输入),并将输出结果发送到屏幕。即:sed 从输入(可以是文件或其它标准输入)中读取一行,将之拷贝到一个编辑缓冲区,按指定的 sed 编辑命令进行处理,编辑完后将其发送到屏幕上,然后把这行从编辑缓冲区中删除,读取下面一行。重复此过程直到全部处理结束。

格式

1
2
3
sed [-n][-e][-f] 'sed_cmd' input_file

其中sed_cmd是sed命令自己提供的命令,当使用`-f`时,sed_cmd可以换成sed_script_file

常用选项

1
2
3
-n:缺省的时候,sed会自动从缓冲区读出一行内容输出,如果使用这个选项,则会禁止
-e:允许使用多条sed命令,sed_cmd
-f:指定sed脚本,sed_script_file

常用的sed命令

参考资料

https://math.ecnu.edu.cn/~jypan/Teaching/Linux/Linux08/lect14_Review.pdf


正则表达式学习
https://ysc2.github.io/ysc2.github.io/2023/12/09/正则表达式学习/
作者
Ysc
发布于
2023年12月9日
许可协议