手机版

linux grep正则表达式和grep用法

时间:2021-09-08 来源:互联网 编辑:宝哥软件园 浏览:

请务必记住,正则表达式不同于通配符,它们有不同的含义

正则表达式只是字符串的一种描述,字符串处理只有和支持正则表达式的工具结合才能完成。本文以grep为例说明正则表达式。

Grep命令

函数:在输入文件的每一行中查找字符串。

基本用法:

grep[-aciv][-color=auto][-a n][-b n]'搜索字符串'文件名

参数描述:

-a:将二进制文档处理为文本-c:显示匹配次数-i:忽略大小写差异-n:显示行号的含义-a:在一行的开头显示后,在匹配字符串后显示n行的数据-b:之前,在匹配字符串前显示n行的数据-v:显示无匹配行的含义-a:之后,在匹配部分后显示n行的数据-b

-颜色:突出显示特定颜色的匹配关键词

color选项是一个非常好的选项,它允许您清楚地了解匹配的字符。最好在自己的里面加上以下内容。bashrc或。bash_profile文件:

别名grep=grep - color=auto

每次grep搜索后,匹配效果会自动突出显示。

“搜索字符串”是一个正则表达式。为了避免shell元字符对正则表达式的影响,请用单引号(“”)括起来,不要用双引号(“”)括起来。

正则表达式分为基本正则表达式和扩展正则表达式。下面是一个简短的总结。

基本正则表达式

正则表达式学习主要是正则表达式元数据的学习。正则表达式没有什么深刻的。本文只总结了基本正则表达式的元数据:

扩展正则表达式

Grep一般支持基本正则表达式,可以通过参数-E支持扩展正则表达式,此外,grep提供了一个名为egrep的扩展命令来支持扩展正则表达式,相当于grep -E.虽然一般来说,基本的正则表达式就足够了。在特殊情况下,复杂的扩展表达式可以简化字符串匹配。

扩展正则表达式就是在基本正则表达式的基础上增加一些元数据。

Linux下面的正则表达式博大精深,最常用的部分在上面的支持中有总结。如果你精通上面的正则表达式,基本可以满足日常使用。

此外,许多Linux命令支持正则表达式,如find、sed、awk等。使用正则表达式时,请参考这些命令的手册。

Linux grep正则表达式

Grep正则表达式元字符集:

例如,在锚线的开头,“grep”匹配所有以grep开头的线。

$锚点行的结尾,例如:' grep$ '匹配以grep结尾的所有行。匹配非换行符,例如,“gr.p”匹配gr后跟任意字符,然后是p。

*匹配零个或多个前面的字符,例如:“*grep”匹配所有带有一个或多个空格后跟grep的行。*一起用于表示任何字符。

[]匹配指定范围的字符,例如“[Gg]rep”匹配grep和Grep。

[]匹配不在指定范围内的字符,例如,'[a-FH-z] rep '匹配不包含A-R和T-Z的行,后跟rep。

\ (.\)标记匹配的字符,如“\(love\)”,love标记为1。

\定位单词的开头,例如:'\匹配包含以grep开头的单词的行。

\锚定单词的结尾,例如“grep”匹配包含以grep结尾的单词的行。

X\{m\}重复字符x,m次,例如,“0\{5\}”匹配包含5 O的行.

x \ { m \ }重复字符x至少m次,例如,“O \ { 5 \ }”与至少5 O的一行匹配.

X\{m,n\}重复字符x至少m次且不超过n次,例如,“o\{5,10\}匹配5-10行。

\w匹配文字和数字字符,即[A-Za-z0-9],例如,‘G \ w * p’匹配G后跟零个或多个文字或数字字符,然后是p。

\b字锁,如: '\bgrep\b '只匹配grep。

常见的grep选项有:

-c只输出匹配的行数。-i不区分大小写(仅适用于单个字符)。-h查询多个文件时不要显示文件名。-l查询多个文件时,只输出包含匹配字符的文件名。-n显示匹配的行和行号。-s不显示不存在或没有匹配文本的错误消息。-v显示不包含匹配文本的所有行。-V显示软件版本信息

Grep匹配最好用双引号括起来,防止系统误认为参数或特殊命令,也可以匹配多个单词。

匹配示例:

Grep -c '48' test.txt计算有多少行以“48”开头

Grep -i 'May' test.txt不区分大小写,可以找到“May”的所有行)

Grep -n '48' test.txt显示行号;显示与字符“48”匹配的行号和行号,与nl test.txt |grep 48相同)

Grep -v '48' test.txt显示输出所有不带字符“48”的行)

Grep '471' test.txt显示输出字符“471”所在的行)

grep ' 48'Test.txt显示输出以字符“48”开始,字符“48”之后是一个tab行。

Grep '48[34]' test.txt显示输出以字符“48”开头,第三个字符为“3”或“4”的所有行)

Grep' [48]' test.txt显示输出行标题不是字符“48”的行)

grep[Mm]ay ' test . txt set case search:显示第一个字符以“m”或“m”开头,以字符“ay”结尾的输出行)

Grep 'K…D' test.txt显示输出的第一个字符为“K”,第二、三、四个字符为任意字符,第五个字符为“D”所在的行)

Grep '[A-Z][9]D' test.txt显示第一个字符的输出范围为“A-D”,第二个字符为“9”,第三个字符为“D”。

Grep' [35].1998' test.txt显示第一个字符是3或5,第二个和第三个字符是任意的,所有行都以1998结尾。

grep ' 4 \ { 2 \ } ' test . txt模式出现概率搜索:显示输出字符“4”至少出现两次的所有行

grep ' 9 \ { 3 \ } ' test . txt模式出现概率搜索:显示输出字符“9”重复出现至少三次的所有行

搜索grep '9\{2,3\}' test.txt模式出现概率:显示输出字符“9”在一定范围内重复出现,所有行重复出现2、3次

显示输出空行的行号

Ls -l |grep '^d'如果要查询目录列表中的目录,它与:ls -d *相同

Ls-l | grep' d [d]'查询目录中不包含目录的所有文件

Ls-l | grpe' d.x.' x '查询其他用户和用户组成员具有可执行权限的目录集合

上面给大家介绍的Grep和正则表达式以及linux grep正则表达式,希望大家喜欢。

版权声明:linux grep正则表达式和grep用法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。