📜  正则表达式起始词 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:10:58.387000             🧑  作者: Mango

正则表达式起始词 - Shell-Bash

正则表达式是在Unix/linux平台下广泛使用的强大工具,用于对字符串进行匹配和替换。对于Shell脚本程序员来说,熟练掌握正则表达式是非常重要的。

正则表达式基础

正则表达式由各种特殊字符、普通字符和元字符组成。

特殊字符

特殊字符在正则表达式中具有特殊的含义,如下表所示:

| 特殊字符 | 含义 | | -------- | -------------------------------- | | $ | 匹配字符串结尾 | | ^ | 匹配字符串开头 | | . | 匹配除换行符以外的任意一个字符 | | + | 匹配前面的字符出现一次或多次 | | * | 匹配前面的字符出现零次或多次 | | ? | 匹配前面的字符出现零次或一次 | | [] | 匹配括号内的任意一个字符或范围 | | () | 将括号内的项作为一个整体进行匹配 |

普通字符

普通字符指正则表达式中除特殊字符和元字符外的其他字符,如字母、数字和标点符号等。

元字符

元字符是一些用于逻辑操作的特殊字符,由多个普通字符组成,如下表所示:

| 元字符 | 含义 | | ------ | -------------------- | | {n,m} | 匹配前面字符n到m次 | | \ | 转义字符 | | | | 匹配前后字符中的一个 | | () | 分组 |

Shell-Bash中的正则表达式应用

在Shell-Bash中,可以使用一些内置的命令和操作符来操作正则表达式。

grep命令

grep命令用于在文件中查找指定的字符串或正则表达式,并输出符合条件的行。

# 查找包含test的所有行
grep "test" file.txt

# 查找不包含test的所有行
grep -v "test" file.txt

# 查找以test开头的所有行
grep "^test" file.txt

# 查找以test结尾的所有行
grep "test$" file.txt

# 查找以t开头,e结尾的所有行
grep "^t.*e$" file.txt

# 查找包含t或e的所有行
grep "t\|e" file.txt

# 查找数字的所有行
grep "[0-9]" file.txt

# 查找包含digit和number的所有行
grep -E "(digit|number)" file.txt
sed命令

sed命令用于对文件的内容进行编辑和替换。其中,正则表达式作为sed命令中的操作数。

# 将所有包含test的字符串替换为new
sed 's/test/new/g' file.txt

# 在每行的开头插入数字
sed 's/^/[0-9] /g' file.txt

# 删除空行
sed '/^$/d' file.txt
awk命令

awk命令用于对文件进行文本处理,支持正则表达式作为条件进行匹配。

# 输出文件中所有以test开头的行
awk '/^test/{print}' file.txt

# 输出以2开头,3结尾的所有行
awk '/^2.*3$/{print}' file.txt

# 输出第一列中包含test的行
awk '/test/{print $1}' file.txt
结束语

本文介绍了Shell-Bash中正则表达式的基础和应用,不同内置命令之间的用法略有不同,需要根据具体情况进行选择。熟练掌握正则表达式可以提高Shell-Bash脚本的编写效率。