技术源于努力
努力实现梦想

grep与正则表达规则 linux入门

在linux中Grep有三种:
global research 根据模式去搜索文本,并将符合模式的文本行显示出来
Egrep:实际上就是grep -E
Fgrep:快速搜索,这个是不支持正则表达式的,也就是按照搜 索文本本身去进行搜索,所以很快
模式:pattern:由文本字符和正则表达式的元字符组合而成匹配条件
Grep:使用基本正则表达式定义的模式来过滤文本的命令

Grep的格式:grep [option] pattern file…,通过模式在对应文件中查找
>grep ‘root’ /etc/passwd 显示符合文件中查找模式的行
注意的是:这里的字符只要是不涉及正则表达式元字符的都可以不用‘’引用起来
>grep –i 表示查找的时候忽略模式的大小写
>grep –- color [=when],表示用颜色显示出来查找的东西
>grep –v 反向查找,被模式匹配的行不显示,没有匹配到的行就显示出来。
>grep –o 只显示被模式匹配到的字符串,也就是查找的本身
注意:grep是在行中去找,所以部分匹配的情况下也会显示出来信息,其实grep本身的意义就是做部分匹配的。
>grep –E:使用扩展的正则表达式
>grep –A n:被匹配的那行以及向下的n行都显示出来:
# grep -A 2 'core id' /proc/cpuinfo
>grep –B n: 被匹配的那行以及向上的n行都显示出来
>grep –C n: 被匹配的那行以及向上和向下的n行都显示出来
>grep –w WORD:精确匹配$WORD
查找内容的通配符:
*:任意长度的任意字符
?:任意单个字符
[]:指定范围内
[^]:指定范围外

正则表达式:regular expression,REGEXP,就是由一些不表示本身意义的、具有通配功能的元字符组成.

元字符:
.:任意单个字符的匹配元字符
字符次数:
*:匹配其前面的字符任意次
\?:匹配其前面的字符一次或者0次,其实就是表示这个符号前面的那个字符可有可无,这里要注意,因为?在通配符中有定义,所以在正则表达式中可能会需要转意,用’\?’表示
\{m,n\}:匹配其前面的字符至少m次,最多n次
\{1,\}:至少1次,多了不限
\{0,3\}:最多三次,最少0次
.*:任意长度的任意字符
注意:默认情况下,正则表达式工作在贪婪模式下,也就是说尽可能长的匹配 。

[]:匹配指定范围内的任意单个字符
 [^]:匹配指定范围外的任意单个字符
 [:digit:]:数字
 [:lower:]:小写字母
 [:upper:]:大写字母
 [:punct:]:标点符号
 [:space:]:空白字符
 [:alpha:]:所有字母
Eg:在/etc/inittab中至少一个数字结尾的
>grep ‘[[:digit:]]$’ /etc/inittab
位置锚定:
 ^:锚定行首,此字符后边的任意内容必须出现在行首
 $:锚定行尾,此字符前面的任意内容必须出现在行尾
 ^$:空白行
 \<或者\b:锚定词首,其后面的任意字符必须作为单词首部出现 \>或者\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
 \<root\>,搜索整个行中root的行,这个root必须是全部匹配
分组:格式:\(\)
 \(ab\):表示ab这个整体,这个分组主要意义:后向引用
 \1:第一个左括号以及与之对应的右括号所包括的所有内容
 >grep ‘\(l..e\).*\1 ’ text2.txt 表示在text2中匹配前面是l..e后边和前面一样的行
 \2:第二个左括号以及与之对应的右括号所包括的所有内容
 \n:第n个左括号以及与之对应的右括号所包括的所有内容
赞(0) 感谢小主打赏
未经允许不得转载:新域软件科技 » grep与正则表达规则
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏