linux grep正则表达式和grep用法
请务必记住,正则表达式不同于通配符,它们有不同的含义
正则表达式只是字符串的一种描述,字符串处理只有和支持正则表达式的工具结合才能完成。本文以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或者邮箱删除。