正则表达式

1. 基本字符匹配:

普通字符:

大多数字符在正则表达式中表示它们自身。例如,a 将匹配字符串中的字母 "a"。

点号(.):

点号 . 表示匹配任意一个字符(除了换行符 \n)。例如,a. 可以匹配 "ab"、"ac" 等。

2. 字符类:

[ ]:

字符类用于匹配括号内的任意一个字符。例如,[abcd] 匹配任何一个字母。

反向字符类 [^ ]:

反向字符类匹配除括号内字符之外的任意一个字符。例如,[^0-9] 匹配任何一个非数字字符。

3. 重复和数量词:

星号(*):

* 表示匹配前面的元素零次或多次。例如,ab*c 可以匹配 "ac"、"abc"、"abbc" 等。

加号(+):

+ 表示匹配前面的元素一次或多次。例如,ab+c 可以匹配 "abc"、"abbc" 等,但不能匹配 "ac"。

问号(?):

? 表示匹配前面的元素零次或一次。例如,ab?c 可以匹配 "ac"、"abc"。

花括号({n,m}):

花括号 {n,m} 表示匹配前面的元素至少 n 次,至多 m 次。例如,a{2,4} 可以匹配 "aa"、"aaa"、"aaaa"。

4. 锚点和边界:

^

^ 表示匹配字符串的开头。当它位于正则表达式的开始位置时,它指示匹配的内容必须在字符串的开头。例如:

  • ^abc:匹配以 "abc" 开头的字符串。
  • ^[\d]+:匹配以一个或多个数字开头的字符串。

$

$ 表示匹配字符串的结尾。当它位于正则表达式的末尾时,它指示匹配的内容必须在字符串的结尾。例如:

  • abc$:匹配以 "abc" 结尾的字符串。
  • [a-z]+$:匹配以小写字母结尾的字符串。

^$ 结合使用:

^$ 也可以结合使用,表示整个字符串必须匹配模式。例如:

  • ^start.*end$:匹配以 "start" 开头,以 "end" 结尾的整个字符串。
\b:

\b 表示单词边界。例如,\bword\b 可以匹配 "word",但不能匹配 "password"。

5. 转义字符:

\ 是转义字符,用于取消特殊字符的特殊含义。例如,\. 匹配点号而不是任意字符。

6. 分组和捕获:

( ):

( ) 用于创建一个捕获组,以便对匹配的部分进行分组。例如,(ab)+ 可以匹配 "ab"、"abab" 等。

7. 字符转义和元字符:

一些字符在正则表达式中具有特殊含义,如 *+? 等。如果想匹配这些字符本身,需要使用 \ 进行转义。例如,a\*b 可以匹配 "a*b"。

8. 选择操作符:

|:

| 表示逻辑或,匹配两边任意一个表达式。例如,cat|dog 可以匹配 "cat" 或 "dog"。

sed

sed [选项] '脚本' 文件
  • 选项:可选,用于控制 sed 命令的行为。
  • '脚本':是由单引号括起来的 sed 命令序列,包含一个或多个命令。每个命令可以是一个地址范围,后跟一个或多个操作。
  • 文件:要处理的文本文件。

常用选项:

  1. -n:禁止默认输出,只打印经过处理的行。
  2. -e:允许在脚本中使用多个命令。
  3. -f script-file:从文件中读取 sed 脚本。

脚本格式:

sed 脚本由一个或多个命令组成,每个命令由一个地址范围和一个或多个操作组成。

[地址范围] 动作
  • 地址范围:用于指定命令作用的行范围。

  • 动作:是 sed 执行的操作,如替换、删除、打印等。

    # 替换行中的"apple"为"orange"
    sed 's/apple/orange/' file.txt
    
    # 在第3行后面插入一行
    sed '3a\
    This is a new line' file.txt
    
    # 删除包含"banana"的行
    sed '/banana/d' file.txt
    
    # 打印第5行到第10行
    sed -n '5,10p' file.txt
    
    # 使用多个命令
    sed -e '/pattern1/s/old/new/' -e '/pattern2/d' file.txt
    

    在脚本中,多个命令可以使用 -e 选项分隔。每个命令都按照顺序执行,影响文件的每一行。

sed 命令的基本语法如下:

复制代码

sed [选项] '脚本' 文件

  • 选项:可选,用于控制 sed 命令的行为。
  • '脚本':是由单引号括起来的 sed 命令序列,包含一个或多个命令。每个命令可以是一个地址范围,后跟一个或多个操作。
  • 文件:要处理的文本文件。

常用选项:

  1. -n:禁止默认输出,只打印经过处理的行。
  2. -e:允许在脚本中使用多个命令。
  3. -f script-file:从文件中读取 sed 脚本。

脚本格式:

sed 脚本由一个或多个命令组成,每个命令由一个地址范围和一个或多个操作组成。基本格式如下:

复制代码

[地址范围] 动作

  • 地址范围:用于指定命令作用的行范围。
  • 动作:是 sed 执行的操作,如替换、删除、打印等。
示例脚本:
复制代码

# 替换行中的"apple"为"orange" sed 's/apple/orange/' file.txt # 在第3行后面插入一行 sed '3a\ This is a new line' file.txt # 删除包含"banana"的行 sed '/banana/d' file.txt # 打印第5行到第10行 sed -n '5,10p' file.txt # 使用多个命令 sed -e '/pattern1/s/old/new/' -e '/pattern2/d' file.txt

在脚本中,多个命令可以使用 -e 选项分隔。每个命令都按照顺序执行,影响文件的每一行。

地址范围:

地址范围指定命令的作用范围。它可以是单个行号、正则表达式、行号范围、以及与逻辑关系的组合。一些常见的地址范围:

  • n:第 n 行。
  • m,n:从第 m 行到第 n 行。
  • /pattern/:匹配包含模式的行。
  • /pattern1/,/pattern2/:匹配包含模式1到模式2之间的行。

动作:

sed 动作是对地址范围内的行执行的操作。一些常见的动作:

  • s/old/new/:替换行中的文本。

  • a\:在匹配行后追加文本。

  • i\:在匹配行前插入文本。

  • d:删除匹配的行。

  • p:打印匹配的行。

    将文件中所有的"apple"替换为"orange"

    sed 's/apple/orange/g' file.txt

    在以"cherry"开头的行后面插入一行

    sed '/^cherry/a
    This is a new line' file.txt

    删除包含"date"的行

    sed '/date/d' file.txt

    打印包含"banana"的行

    sed -n '/banana/p' file.txt

    将第2行到第5行的文本替换为"New Text"

    sed '2,5s/.*/New Text/' file.txt

相关推荐
superman超哥1 小时前
04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索
数据库·oracle·性能优化·dba
用户8007165452001 小时前
HTAP数据库国产化改造技术可行性方案分析
数据库
engchina2 小时前
Neo4j 和 Python 初学者指南:如何使用可选关系匹配优化 Cypher 查询
数据库·python·neo4j
engchina2 小时前
使用 Cypher 查询语言在 Neo4j 中查找最短路径
数据库·neo4j
尘浮生2 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
威哥爱编程2 小时前
SQL Server 数据太多如何优化
数据库·sql·sqlserver
小华同学ai2 小时前
AJ-Report:一款开源且非常强大的数据可视化大屏和报表工具
数据库·信息可视化·开源
Acrelhuang2 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
十叶知秋3 小时前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
瓜牛_gn5 小时前
mysql特性
数据库·mysql