"grep"及正则表达式的一般用法

grep:是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并能把匹配的行打印出来。
模式:由正则表达式的元字符及文本字符所编写的过滤条件;
元字符:字符不表示其字面意义,而用于表示通配或控制功能;
分两类:
            基本正则表达式:BRE
            扩展正则表达式:ERE
    基本用法:grep [OPTIONS] PATTERN [FILE...]

基本选项:
         --color=auto:对匹配到的串做高亮显示
         -i            不区分大小写
         -o           仅显示能够被模式匹配到的串本行
         -v           显示模式匹配不到行
         -E           使用扩展的正则表达式
         -q, --quiet, --silent      不显示任何东西
实例:
显示etc/passwd文件内含root字符的行,并以高亮显示
[[email protected] yum.repos.d]# grep --color=auto |grep "root" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

匹配/etc/passwd文件内的"dns"字符(忽略大小写) -i
[[email protected] ~]# grep -i "dns" /etc/passwd
unbound:x:993:992:Unbound DNS resolver:/etc/unbound:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin

只显示/etc/passwd文件中的“bash”字符 -o
[[email protected] ~]# grep -o "bash" /etc/passwd

除含有“nologin”字符的行 -v
[[email protected] ~]# grep -v "nologin" /etc/passwd

基本正则表达式的元字符:
  字符匹配:
 .: 匹配任意单个字符;
 []:匹配指定范围内的任意单个字符;
[^]:匹配指定范围内的任意单个字符
[:lower:]表示所有小写字母
[:upper:]表示所有大写字母
[:alpha:]表示所有字母
[:digit:]表示所有数字
[:alnum:]表示所有字母和数字
[:punct:]表示标点符号
[:space:]表示所有的空白字符

次数匹配:用于要指定其次数的字符的后面;
 *: 任意次
 \?:0或1次
                
 \+:1或多次; 
 \{m\}:精确限制为m次;
 \{m,n\}: 至少m次,至多n次,[m,n]
  \{0,n\}:至多n次;
   \{m,\}:至少m次;
   
.*: 匹配任意长度的任意字符
   
位置锚定:
 ^: 行首锚定;用于模式的最左侧
 $: 行尾锚定;用于模式的最右侧
 \<, \b: 词首锚定;用于表示单词的模式的左侧;
 \>, \b:词尾锚定;用于表示单词的模式的右侧;
 ^$: 空白行

 分组:\(\)

 分组的小括号中的模式匹配到的内容,会在执行过程中被正则表达式引擎记录下来,并保存内置的变量中;这些变量分别是\1, \2, ...
 \1: 从左侧起,第一个左括号,以及与之配对的右括号中间的模式所匹配到的内容;
 \2:....
                   

 后向引用:使用变量引用前面的分组括号中的模式所匹配到的字符
 
 
 
 扩展的正则表达式:
            grep:基本正则表达式
                -E: 扩展正则表达式
                -F:不支持正则表达式
            egrep:扩展正则表达式
            fgrep:不支持正则表达式

扩展正则表达式的元字符与基本正则表达式的区别部分:
 ?: 0次或1次;
 +: 1次以上;
{m}: 精确匹配m次;
{m,n}: 至少m次,至多n次;

 锚定:
^: 锚定行首
$: 锚定行尾

 分组:()
后向引用:\1, \2, ...

 或者:
 a|b 
C|cat: 不表示Cat或cat,而表示C或cat;
要写成(C|c)at

作业:
1.显示/etc/passwd文件中以bash结尾的行
[[email protected] ~]# grep "bash$" /etc/passwd

2.显示/etc/passwd文件中的两位数或三位数
[[email protected] ~]# grep -o "\<[[:digit:]]\{2,3\}\>" /etc/passwd

3.显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
[[email protected] ~]# netstat -tan |grep "LISTEN.*$"
  

4.添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
[[email protected] ~]# useradd bash
[[email protected] ~]# useradd basher
[[email protected] ~]# useradd -s /sbin/nologin nologin
[[email protected] ~]# grep "^\(\<[[:alnum:]]\+\>\).*\1$" /etc/passwd
 

5.显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
[[email protected] ~]# useradd centos
[[email protected] ~]# useradd user1
[[email protected] ~]# cat /etc/passwd |cut -d: -f1,3,7 |egrep "^root|centos|user1"

6.找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
[[email protected] ~]# egrep "\<[[:alpha:]_]+\>\(\)" /etc/rc.d/init.d/functions

7.使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名
[[email protected] ~]# echo /etc/rc.d/init.d/functions |egrep "([^/][[:alnum:]]+)$"   取出路径基名

[[email protected] ~]# echo /etc/rc.d/init.d/functions |egrep ".*/"                   取出目录名

8.找出ifconfig命令执行结果中1-255之间的数字
[[email protected] ~]# ifconfig |egrep "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]\>)"
时间: 2024-11-09 10:52:51

"grep"及正则表达式的一般用法的相关文章

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

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户. 主要参数    [options]主要参数:    -c:只输出匹配行的计数.    -I:不区分大 小写(只适用于单字符).    -h:查询多文件时不显示文件名.    -l:查询多文件时只输出包含匹配字符的文件名.    -n:显示匹配行及 行号.    -s

grep及正则表达式用法总结

一.grep的基本用法 ????????grep是一个常见的文本选取工具,它可以将一段数据分析后,取出我们想要的,或者是经由关键字.正则表达式匹配选出我们想要的那一行.grep的用法及选项如下所示: grep:文本过滤工具 用法1:grep [OPTIONS] PATTERN [FILE...] 用法2:grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] -v:取反,显示文本中没有被PATTERN匹配上的所有行 -i:匹配是忽略字符大小写 -n:匹配出

Linux &nbsp; &nbsp; grep命令,正则表达式

grep命令及正则表达式 grep命令 grep , egrep , fgrep grep,sed,awk 文本处理三剑客 grep: Global search REgular expression and Print out the line;全面查找正则表达式并将匹配到的行显示出来; 正则表达式 正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用;许多程序设计语言都支持利用正则表达式进行字符串操作; 主流的正则引擎又分为三类:DFA;传统型NFA;POSIX NFA; DFA

grep与正则表达式,grep、egrep和fgrep

grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串.vim.grep.awk .sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大:1基础正则表达式grep 工具,以前介绍过.grep -[acinv]   '搜索内容串'   filename-a 以文本文件方式搜索-c 计算找到的符合行的次数-i 忽略大小写-n 顺便输出行号-v

grep与正则表达式

一.grep简介 二.基本正则表达式 三.egrep扩展正则表达式 四.其他文本及查看工具{wc,cut,sort,uniq,diff,patch} 五.练习用例 一.grep简介 文本处理工具: Linux上文本处理三剑客: grep:文本过滤工具(模式:pattern) grep:基本正则表达式,-E扩展,-F egrep:扩展正则表达式,-G基本,-F fgrep:不支持正则表达式, sed:stream editor,流 编辑器 awk:Linux上实现的为Gawk,GNU/awk,文本

[Linux 006]——grep和正则表达式

在使用系统时,我们或多或少的有一些搜索.查找的需求,必须要在文本中搜索某个关键字,或者过滤出文本中某些特定的行.grep 命令就为我们提供了这样一个功能,同时,grep 还可以使用正则表达式进行匹配,这是一个强大的功能,有必要好好掌握. 1.grep 初体验 grep PATTERN [OPTIONS] FILE:在文件中按照模式进行查找.FILE 是我们要查找的目标文件,如果不指定目标文件,grep 将会从标准输入中读取输入的内容,然后进行匹配.为了方便起见,本文的所有演示都在命令行中通过标准

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

利用grep与正则表达式快速精确实现文本通配

什么是grep? grep (global search regular expression(RE) and print out the line,其全称意义为全局搜索正则表达式,并打印出来.是一种功能强大,简单易用的文本搜索工具.它能根据其后指定的匹配方式匹配出文件中的文本,并把匹配到的那整行都打印出来. 在Linux中grep家族有三个成员,分别是grep,egrep和fgrep,其使用方法略有不同,其中egrep是grep的扩展,而fgrep则是在进行文本通配时把所有的字母都当做单词来处

shell编程之grep和正则表达式

文本处理工具: linux上文本处理三剑客:    grep:文本过滤工具(模式:pattern);        grep:基本正则表达式,-E,-F         egrep:扩展正则表达式,-G,-F         fgrep:不支持正则表达式,-E,-G     sed:steam editor,流编辑器;文本编辑工具;    awk:linux上的实现为gawk,文本报告生成器(格式化文本);        正则表达式:Regular Expression,REGEXP