`

【Linux基础篇】通配符与Grep正则表达式

 
阅读更多

 

bash Shell本身不支持正则表达式,使用正则表达式的是Shell命令和工具

如grep,sed,awk

 

正则表达式元字符:?、 *、 []、 {}、 ^

这些元字符在通配中的含义与在正则表达式中不一定相同

*     表示任意位置任意字符

echo hell*.txt  匹配结果:hello.txt,hellu.txt, helloo.txt

 

?    表示1个任意字符

echo hell?.txt  只匹配hello.txt, hellu.txt

 

[]    表示某1范围

echo [a-z]*.txt   匹配所有以字母a~z开头的txt文件

 

{}    表示1组表达式的集合

echo {[a-z*.txt, *.pdf]} 匹配a~z开头的txt文件,和pdf文件

 

^    表示取反(不代表行首)

echo [a-h]*.[^txt]* 匹配以字母a~h开头并且后缀不是txt的文件

 

 

正则表达式

GREP Global search Regular Expression and Print out the line

全局搜索正则表达式并将结果打印按行打印

 

grep 文本搜索

ps -ef | grep tomcat

grep搜索的数据源:

1. 通过管道传递过来的文本数据

2. 指定文件中进行搜索

 

grep [选项] [模式] [文件]

 

在1个或多个文件中搜索满足模式的文本行

模式后面所有字符串被解析为文件名,可以跟多个文件名

 

option

-c  只输出匹配的行数

-i   搜索时忽略大小写

-h  查询多文件时不显示文件名

-l   只列出符合匹配的文件名,而不列出具体的匹配行

-n  列出所有的匹配行,并显示行号

-w  匹配整词

-x   匹配整行

-r    递归搜索

-E   支持扩展的正则表达式

-F   不支持正则表达式,按字符串字母意思进行匹配

 

只要模式中包含空格,则必须用引号将整个字符串括起来,否则,空格后面的字符串将被解析为文件名

 

 

grep -n  x-forwarded-for  a.txt  b.txt  列出匹配行,并显示行号

more -113 a.txt   根据行号查看该行前后的内容

 

-c 

grep -c Certificate *.txt 只显示包含模式行的数量

 

-n

grep -n Certificate *.pem  在行内容前面附加该行在文件中的行号

 

-i

grep -i Certificate *.pem   不区分大小写匹配Certificate

 

-h

grep -h Certificate *.pem  不再显示匹配行所在的文件名

 

-l

grep -l Certificate *.pem   只列出符合匹配的文件名,而不列出具体的行

 

-r

grep -r Certificate *  递归搜索当前目录和子目录

 

-w grep命令使用-w后,元字符不再解析为特殊含义字符,照字面意思解析

grep -w cer*  00.pem   整词匹配"cer*"

 

-x

grep -x Hello  *.pem     整行匹配"Hello"

 

 

grep与正则表达式结合使用

匹配行首

grep  ^-  *.pem           匹配以'-'开头的行

grep  -c  ^$   00.pem   匹配空白行

grep  -c  ^[^$]  00.pem  匹配非空白行

匹配大小写

grep -n  [cC]ertificate  00.pem 

grep -i certificate 00.pem

匹配重复字符

grep   ^/..../   00.pem   匹配以"/"开头,跟4个任意字符,接着跟"/"的行

grep   ^-*B    00.pem   匹配以"-"开头,重复"-"任意次,然后是"B"字符的行

转义符

grep   edu\.org\.cn  00.pem  对"."进行转义,按字面意思处理

grep   \-\{5,\}   00.pem  对"-"进行转义

精确匹配

grep "\<the\>"  re01  精确匹配"the"单词

 

或字符,grep需要加-E选项才支持"|"

grep -E  "OU|UO"  00.pem 

 

匹配任意字符 .

ls -al | grep .2006.  抓取所有包含2006的行 

 

egrep 等价于grep -E

它是扩展后的grep命令,支持基本和扩展的正则表达式

扩展的正则表达式:

? 匹配0次或1次

+   至少匹配1次

|    或

()   通常与"|"结合使用,表示一组可选的字符集合

 

egrep  "seu.edu|certificate"   00.pem

egrep  "^-+B"   00.pem

 

 

分享到:
评论

相关推荐

    Shell编程-正则表达式

    #### 二、正则表达式与通配符的区别 在Shell环境中,正则表达式和通配符虽然都是用于模式匹配的技术,但它们有着本质的不同: 1. **正则表达式**: - **功能**:用于在文件中匹配符合条件的字符串,支持复杂的...

    grep命令调研文档

    本文详细介绍了 Grep 命令的基本用法以及一些高级功能,包括正则表达式的使用、选项配置以及与其他命令的组合使用。掌握这些技能对于高效处理文本数据至关重要,尤其是在 Linux 环境下的脚本编写和自动化任务管理中...

    linux脚本大全必看

    ### 四、高级篇:正则表达式与函数 #### 1. 正则表达式 正则表达式是用于文本匹配和搜索的强大工具,通过使用`grep`, `sed`, `awk`等命令,可以在脚本中实现复杂的文本处理功能。 #### 2. 函数 - **函数定义**:...

    Linux与unix shell编程指南

    这里会讲解正则表达式、通配符和模式匹配,以及利用Perl、awk和sed进行复杂文本处理的高级技巧。这些技能对于分析日志文件、处理文本数据或自动生成报告非常有用。 第五部分,系统管理,简要介绍了与系统管理相关的...

    linux常用命令之bash入门指南 中文WORD版

    6. **通配符和正则表达式**:`*`代表任意多个字符,`?`代表任意单个字符。正则表达式提供更复杂的匹配规则,如`^`表示开始,`$`表示结束,`.`代表任意字符,`[]`表示字符集。 7. **Bash脚本**:Bash脚本是包含一...

    Linux 文件命令精通指南

    `)和正则表达式用于匹配和筛选文件名。`ls`命令是最常用的文件列表命令,其选项如`-l`显示详细信息,`-i`显示inode号码,`-a`显示隐藏文件。`find`和`grep`等命令用于查找和搜索文件内容。 此外,还有文件的创建、...

    高级BASH编程

    **五、正则表达式与模式匹配** 1. **正则表达式**:BASH支持正则表达式,如在`[[`条件测试中使用的`=~`运算符。 2. **文件名扩展**:`*`和`?`通配符用于匹配多个文件,`[abc]`匹配字符a、b或c。 **六、BASH特性与...

    Linux下shell编程

    2. **正则表达式**:更复杂的匹配模式,如`^`表示开始,`$`表示结束,`.`表示任意字符。 3. **别名与函数**:创建别名或函数来简化常用命令,提高效率。 通过学习和实践Linux下的shell编程,你可以编写出自动化的...

    linux常用命令之bash入门指南.zip

    2. **正则表达式**:在`grep`、`sed`等命令中使用,进行更复杂的模式匹配。 3. **I/O重定向与管道**:结合`&gt;&gt;`追加输出,`和`&gt;&`用于重定向文件描述符。 六、调试Bash脚本 使用`set -x`开启命令追踪,`set -v`显示...

    实践大师:Unix Shell编程篇

    5. **正则表达式**:在`grep`、`sed`等命令中使用正则表达式进行文本匹配和处理。 通过深入学习和实践上述知识点,你将能够编写出高效、灵活的Shell脚本,解决各种自动化任务,提升工作效率。在Unix/Linux环境中,...

    实践大师:unix shell编程篇

    4. **正则表达式**:在某些命令(如grep, sed, awk)中,正则表达式用于模式匹配和数据提取。 **高级特性** 1. **函数**:创建可重用的代码块,提高脚本的模块化和可读性。 2. **数组**:Bash支持数组,可以存储一...

    shell脚本开发

    通过阅读《Linux与Unix Shell编程指南》这本书,你可以深入了解这些概念,并学习如何编写实用的Shell脚本。这不仅会提升你的系统管理效率,还能为自动化任务提供强大支持。记得实践是检验真理的唯一标准,多写脚本,...

    UNIX SHELL 经典(全)

    这部分主要关注UNIX系统下的文本处理工具,如vi/vim编辑器的使用,正则表达式,以及利用grep、sed和awk进行文本搜索、替换和格式化。此外,可能还会介绍一些高级的文本处理技巧,如管道链、组合命令等。 第五部分:...

    高级Bash脚本编程指南

    ### 一、基础篇 #### 1. 特殊字符 Bash脚本中,特殊字符如`$`,`#`,和`*`等有着特定的意义,它们用于变量引用、注释和通配符等功能,理解这些特殊字符是编写有效脚本的基础。 #### 2. 变量与参数 - **变量替换**...

    Unix_Shell

    4. 正则表达式:在`grep`、`sed`等命令中,可以使用正则表达式进行复杂的文本匹配。 七、Shell调试与优化 1. 调试技巧:使用`set -x`开启命令行追踪,`set -v`显示所有输入的命令。 2. 错误处理:利用`errexit`选项...

    命令行的艺术

    正则表达式是命令行中的强大工具,掌握`grep`和`egrep`的不同选项,如`-i`、`-o`、`-A`、`-B`,能帮助你在大量文本中快速找到所需信息。安装和管理软件包,根据你的Linux发行版使用`apt-get`、`yum`、`dnf`或`pacman...

    命令行的最新技术:在一页中掌握命令行

    - **grep的正则表达式**:更复杂的模式匹配。 - **管道与grep的组合**:如`ps aux | grep 'process_name'`,查找正在运行的进程。 7. **在不同平台上的差异**: - **Windows**:CMD和PowerShell是命令行工具,...

Global site tag (gtag.js) - Google Analytics