Part 3 grep正则表达式

Grep:

Linux文本处理三剑客

grep: 文本过滤(模式:pattern)工具

Sed: 文本编辑工具

awk:Linux上的实现gawk,文本报告生成器:

正则表达式引擎

选项:

-v: 显示不能够被pattern匹配到的行;

-q: 静默模式,不输出任何信息

基本正则表达式元字符

字符匹配:

.: 匹配任意单个字符:

[:digit:]、[:lower:]、[:upper:]、[:alnum:]、[:punct:]、[:space:]、[:alpha:]

匹配次数,用在要指定次数的字符后面,用于指定前面的字符要出现的次数:

*:匹配前面字符任意次

例如:grep "x*y"

abxy

Xay

.*: 任意长度的任意字符

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

+: 匹配其前面的字符至少1次

{m}: 匹配前面的字符m次

{m,n}:匹配前面的字符至少m次,至多n次

{0,n}; 匹配前面的字符至多n次:

{m,}: 匹配前面的字符至少m次

位置锚定

^: 行首锚定,用于模式的最左侧:

$: 行尾锚定:用于模式的最右侧

^PATTERN$: 用于模式匹配正行

^$: 空行:

^[[:space:]]*$

\<或\b: 词首锚定;用于单词模式的左侧;

\>或\b: 词首锚定;用于单词模式的右侧;

\<PATTERN\>: 匹配整个单词;

分组:

(): 将一个或多个字符捆绑在一起,当作一个整体进行处理:

(xy)*ab

示例:# grep "(xy)+" grep.txt

Note: 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,…

\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

(ab+(xy)*);

\1

后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)

grep ‘^[Ss]‘ /proc/meminfo

  1. sort -t: -k3 -n /etc/passwd | tail -1 | cut -d: -f1

  2. grep "\b[0-9]{2,3}\b" /etc/passwd # grep "\b[[:digit:]]{2,3}\b" /etc/passwd

  3. grep "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg

  4. netstat -tan | grep "LISTEN[[:space:]]*$"

  5. grep "^([[:alnum:]]+\>).*\1$" /etc/passwd

grep "(^[[:alnum:]]+\>).*\1$" /etc/passwd

grep "^([[:alnum:]]+\>).*\1$" /etc/passwd

egrep = grep -E

扩展正则表达式的元字符

字符匹配:跟正则表达一样

次数匹配:

?: 0或1次

+:1次或多次

{m}: 匹配m次

{m,n}:至少m; 至多n次

锚定:

^

$

\<,\b

\>,\b

分组:

()

后向引用:\1,\2,…

或者:

a|b

grep -E ‘^(root|centos|user1)\>‘ /etc/passwd

grep -E ‘^(root|centos|user1)\>‘ /etc/passwd | cut -d: -f1,3,7

grep -E -o "^[_[:alpha:]]+()" /etc/rc.d/init.d/functions

echo "/mnt/sdc" | grep -E -o "[^/]+/?$" | cut -d"/" -f1

进一步:使用egrep取出路径的目录名,类似于dirname命令结果,

fgrep: 不支持正则表达式搜索:

原文地址:http://blog.51cto.com/yq1986/2337227

时间: 2024-10-05 05:41:32

Part 3 grep正则表达式的相关文章

linux入门之grep 正则表达式案例

grep 正则表达式案例 案例一: 1.显示/proc/meminfo文件中以大小s开头的行:(要求:使用两种方式) #grep -i '^s' /proc/meminfo #grep  '^[Ss]' /proc/meminfo #grep -E '^(s|S)' /proc/meinfo 2.显示/etc/passwd文件中不以/bin/bash结尾的行 #grep -v '/bin/bash$' /etc/passwd 3.显示用户rpc默认的shell程序 #grep '^\<rpc\>

grep 正则表达式

名字 grep, egrep, fgerp 解释: grep是一个最初用于Unix操作系统的命令行工具. 在给出文件列表或标准输入后, grep会对匹配一个或多个正则表达式的文本进行搜索, 并只输出匹配(或者不匹配)的行或文本. 用法: grep [option] 'PATTERN' file ... --color=auto          常用选项[option]:               -v : 反向匹配, 显示不能被模式匹配到的行.               -o : 只显示被

grep正则表达式与grep用法详解

功能:输入文件的每一行中查找字符串. 基本用法: grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名 参数说明: -a:将二进制文档以文本方式处理-c:显示匹配次数-i:忽略大小写差异-n:在行首显示行号-A:After的意思,显示匹配字符串后n行的数据-B:before的意思,显示匹配字符串前n行的数据-v:显示没有匹配行-A:After的意思,显示匹配部分之后n行-B:before的意思,显示匹配部分之前n行 --color:以特定颜

grep正则表达式详解及练习

grep正则表达式详解及练习 一.在学习grep正则表达式前,先了解下linux著名的文本处理三剑客: (1)grep.egrep.fgrep 文本搜索工具. (2)sed     文本编辑工具,一种流编辑器,行编辑工具. (3)awk 强大的文本分析工具,文本格式化工具,文本报告生成器. 以上三大命令均支持正则表达式,本文以grep正则表达式为例展开学习. 1.什么是正则表达式? 正则表达式(Regular Expression):由一类特殊字符及文本字符所编写的模式,其有些字符不表示其字面意

grep正则表达式原理介绍及应用实例

应用背景:我们刚刚添加了一个用户Luffy,但是不知道他的默认shell是什么. 问题:如何取出一个用户的默认shell? 解决方法: #grep '^Luffy\>' /etc/passwd | cut -d: -f7 /bin/bashf 通过上面的方法,我们就得到了Luffy这个用户的默认shell 文本搜索工具:就是要根据用户指定的文本模式,逐行的进行匹配,最终得到符合文本模式的行 grep是一个强大的文本搜索工具,下面我们就介绍一下grep的语法: grep [OPTIONS] PAT

linux grep 正则表达式

grep正则表达式元字符集: ^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行. $ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行. . 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p. * 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行. .*一起用代表任意字符. [] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep. [^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]

linux 命令grep正则表达式

Linux 命令grep正则表达式 在linux里面有处理文本的三剑,现在我要说的就是grep正则表达式的使用,正则表达式只是一种表示法,只要工具支持这种表示法,那么该工具就可以处理正则表达式的字符串.vi grep ,awk ,sed 等都支持正则表达式..正则表达式有基本正则表达式和扩展正则表达式. grep默认就是基本表达式. 基本正则表达式: 默认匹配次数:贪婪模式,尽可能多的去匹配. 扩展正则表达式:基于基本正则表达式多加了一些功能,基本一样. 1. grep命令 grep [参数]

awk &nbsp; sed &nbsp; grep &nbsp; &nbsp; 正则表达式

做事要有耐心. 虚心接受建议,你确实有很多缺点. 就算进步慢,也不可以停止前进的脚步. AWK awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有三种不同版本: awk   gawk    nawk 1.使用方法 awk '{pattern + action}' {filenames} 其中 pattern 表示 AWK 在数

vim 和grep 正则表达式相似和区别

正则表达式由两种基本字符类型组成:原义(正常)文本字符和元字符.元字符使正则表达式具有处理能力.所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式. vim元字符 grep 元字符 说明 ^ ^ 匹配输入字符串的开始位置 $ $ 匹配输入字符串的开始位置 * * 匹配前面的子表达式0次或n次(n>0) \+ \+ 匹配前面的子表达式1次或n次(n>1) \? \? 匹配前面的子表达式0次或1次 \{n} \{n\}

grep 正则表达式的使用方法

awk .sed.grep(egrep)要想能工作的更高效,那一定离不开正则表达式的配合:要玩好三剑客,首先就要掌握正则表达式. 最开始的文本: 1)^word 搜索以word开头的行 2) word$ 搜索以word结尾的 3). 代表非换行符的任意一个字符 4)\ 转移符号,让有着特殊身份的字符,脱掉马甲,还原原型 5)* 例如o*表示重复一个字符或多个前面的字符 6).* 匹配所有字符,^.*以任意多个字符开头 7)[] 字符集合的重复特殊字符的符号*如[lg]是代表l或者g 现在的文本为