首页 > 学院 > 操作系统 > 正文

grep命令简介+正则表达式+globbing

2024-06-28 16:03:55
字体:
来源:转载
供稿:网友

grep命令

1.作用linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular ExPRession Print,表示全局正则表达式版本,它的使用权限是所有用户

2.格式grep [options]

[options]主要参数:-c:只输出匹配行的计数。-I:不区分大 小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及 行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。

3.使用实例

grep ‘root’ /etc/passwd

grep -i ‘root’ /etc/passwd  //不区分大小写

grep --color  ‘root’ /etc/passwd  //高亮显示

alias grep=’grep --color’ 

grep -v  ‘root’ /etc/passwd  //反向查找,匹配到的不显示,没有匹配到的显示出来

grep -o ‘root’ /etc/passwd  //关键词查找每个关键词一行,显示北匹配到的字串

正则表达式

主要知识点:原子、元字符、位置锚定、分组、后向引用

原子:构成正则的最基本单元。举例如下

1>打印字符a-z A-Z 0-9  *?$等字符    

2>转义字符

 /d  包含所有数字[0-9]

 /D  除所有数字外[^0-9]

 /w  包含所有英文字符[a-zA-Z_0-9]

 /W  除所有英文字符外[^a-zA-Z_0-9] /s  包含空白区域如回车、换行、分页等 [/f/n/r]

3>自定义组合字符组  .:匹配任意单个字符

 []:匹配制定范围内的任意单个字符即自定义组合字符

 [^]:匹配指定范围外的任意单个字符串

4>国际通用字符组

[[:upper:]]   [A-Z][[:lower:]]   [a-z][[:digit:]]   [0-9][[:alnum:]]   [0-9a-zA-Z][[:space:]]   空格或tab[[:alpha:]]   [a-zA-Z]

元字符:修饰原子的个数

*:匹配其前面的字符的任意次

/?:匹配起前面的字符1次或0次

/{m,n/}:匹配其前面大于等于m次小于等于n次的字符

位置锚定:定位原子的个数

^:锚定行首,此字符后边的任意字符必须出现在行首

$:锚定行尾

^$:空白行

/b:锚定词首,其前面或后面的字符必须作文单词的首部或尾部

分组:聚合原子成组

/(abc/) :代表abc成一个原子

后向引用:通常与分组一起使用

/1 :引用第一个左括号以及与之对应的右括号匹配到的内容

使用实例:

grep "/broot"  1.txt :匹配文件中所有单词前缀是root的行

grep "^r..t" /etc/passwd :匹配文件中以r..t开头的行。其中..代表两个任意字符

grep “”l..e“” text.txt :匹配文件中含有l..e的行

grep '/(l..e/).*/1':匹配l..e后边跟任意字符并且必须含有前面()匹配到的内容

         he is my lover ,I love her.

         he is my liker , I like her.

grep --color -A 2 '^core id' /proc/cpuinfo 将匹配到的行后边两行也显示

-B 2 前两行

-C 2 前后两行

grep -E 'C|cat' test.txt 将匹配到C或cat

grep -E '(C|c)at' test.txt 将匹配到Cat或cat

-E 扩展正则表达式

grep -i 忽略大小写

grep -o 只显示匹配导的东西

grep -v 显示未被匹配到的行

globbing:globbing很简单,顺便给出总结图。更形象。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表