liunx中grep,egrep及相应的正则表达式和用法

正则表达式是linux中重要的一部分,学习正则表达式先要学好grep和egrep的命令使用。

1. grep:

grep命令的基本语法格式

grep [OPTION]... ‘PATTERN‘ FILE...

grep的常用选项:

-v : 对匹配的行进行取反

-o : 仅显示匹配到的内容

-i : 忽略字符大小写

-n : 为匹配的行加上行号

-E : 使用扩展正则表达式 ,等同于egrep命令

-F : 不使用正则表达式搜索,等同于fgrep命令

-A # : 连同匹配行的下#行一并显示,#代表任意数字

-B # : 连同匹配行的上#行一并显示,#代表任意数字

-C # : 连同匹配行的上下#行一并显示,#代表任意数字

--color=auto : 对匹配的内容以不同的颜色显示

用 grep命令查找 /etc/passwd 文件中 含有 “halt” 字符串的行

使用-v选项,进行反应查找的效果

-o:只显示匹配到的内容

没有使用-o选项的效果:

使用-0选项的效果:

-i:忽略大小写

-n : 为匹配的行加上行号

2.基本正则表达式元字符

(1)字符匹配

. : 匹配任意单个字符

. * :表示匹配任意长度的任意字符

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

\? : 匹配其前面的字符出现0次或1次的行

\{m\} : 匹配其前面的字符出现m次的行

\{m,n\} : 匹配其前面的字符至少出现m次,至多出现n次的行,m和n表示一个范围m-n

\{0,n\}:至多n次

  1. [] : 表示匹配范围内任意单个内容

    常用的集合表示方法有:

    纯数字:[[:digit:]]或[0-9]

    小写字母:[[:lower:]]或[a-z]

    大写字母:[[:upper:]]或[A-Z]

    大小写字母:[[:alpha:]]或[a-zA-Z]

    数字加字母:[[:alnum:]]或[0-9a-zA-Z]

    空白字符:[[:space:]]

标点符号:[[:punct:]]

例子1:匹配包含数字0或2的行

例子2:匹配包含字母a或b的行

例子3:匹配包含数字0-9的行

3.位置锚定:

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

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

^PATTERN$:要让PATTERN完全匹配一整行;

^$:空行;

^[[:space:]]*$:

单词:由非特殊字符组成的连续字符(字符串)都称为单词;

^ : 行首锚定

$ : 行尾锚定

^$ : 匹配空白行

\< : 词首锚定

\> : 词尾锚定

\<\> : 匹配单词

分组:

\(\)

\(ab\):表示ab整体作为匹配字符

\(ab\)* : 表示ab整体作为匹配字符,且匹配任意次

\(ab\)\{1,\}:表示ab整体作为匹配字符,且匹配至少一次

分组还可以后向引用

\1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\2: 引用第一个左括号以及与之对应的右括号所包括的所有内容

\3: 引用第一个左括号以及与之对应的右括号所包括的所有内容

举例:有文本文件如下内容:

He love his lover.

He like his lover.

He love his liker.

He like his liker.

grep "\(l..e\).*\1r" ttt.txt 表示匹配结果如下:

2.egrep:

  • 支持使用扩展正则表达式的grep命令,相当于grep -E;
  • egrep [OPTIONS] PATTERN [FILE...]
  • 扩展正则表达式的元字符:
  • 字符匹配:
  • .:任意单个字符
  • [ ]:范围内的任意单个字符
  • [^ ]:范围外的任意单个字符
  • 匹配次数:
  • *:任意次;
  • ?:0次或1次;
  • +:1次或多次;
  • {m}:匹配m次;
  • {m,n}:至少m次,至多n次;
  • {0,n}
  • {m,}
  • 位置锚定:
  • ^:行首
  • $:行尾
  • \<, \b:词首
  • \>, \b:词尾
  • 分组及引用:
  • (pattern):分组,括号中的模式匹配到的字符会被记录于正则表达式引擎内部的变量中;
  • 后向引用:\1, \2, ...
  • 或者:
  • a|b:a或者b
  • C|cat:表示C或cat
  • (C|c)at:表示Cat或cat

3.练习:

(1).显示/proc/meminfo文件中以大写或小写s开头的行;

# grep -i ‘^s‘ /proc/meminfo

(2).显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

# grep -v ‘/sbin/nologin$‘ /etc/passwd | cut -d: -f1

(3).显示/etc/passwd文件中其默认shell为/bin/bash的用户

进一步:仅显示上述结果中其ID号最大的用户

# grep ‘/bin/bash$‘ /etc/passwd | cut -d: -f1 | sort -n -r | head -1

(4).找出/etc/passwd文件中的一位数或两位数;

# grep ‘\<[[:digit:]]\{1,2\}\>‘ /etc/passwd

(5).显示/boot/grub/grub.conf中至少一个空白字符开头的行

# grep ‘^[[:space:]]\+.*‘ /boot/grub/grub.conf

(6).显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的      行;

# grep ‘^#[[:space:]]\+[^[:space:]]\+‘ /etc/rc.d/rc.sysinit

(7).找出netstat -tan命令执行结果中包含‘LISTEN‘的行;

# netstat -tan | grep ‘LISTEN[[:space:]]*$

(8).显示当前系统上root、centos或user1用户的默认shell及用户名;

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

(9).找出/etc/rc.d/init.d/functions文件中某单词后面跟一对小括号‘()"的行;

# grep -o ‘\<[[:alpha:]]\+\>()‘ /etc/rc.d/init.d/functions

(10).使用echo输出一个路径,而使用egrep取出其基名;

# echo /etc/rc.d/ | grep -o ‘[^/]\+/\?$‘ | grep -o ‘[^/]\+‘

    时间: 2024-08-05 20:42:41

    liunx中grep,egrep及相应的正则表达式和用法的相关文章

    linux下grep、egrep及相应的正则表达式和用法

         linux下grep.egrep及相应的正则表达式和用法                       一.简介      Linux上文本处理三剑客(引用自马哥教育 ):  grep, egrep, fgrep:文本搜索工具:基于"pattern"对给定文本进行搜索操作:     sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:     awk:GNU awk,文本格式化工具:文本报告生成器:         grep (缩写来自Globally se

    grep, egrep及相应的正则表达式用法详解

    grep, egrep及相应的正则表达式用法详解 一.grep/egrep Global search REgular expression and Print out的简写,是一种强大的文本搜索工具,它根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep. linux使用GNU版本的grep.它功能更强,可以通过-E.-F命令行选项来使用egrep和fgrep的功能(fgrep不使用

    Linux中的grep、egrep及相应的正则表达式和用法

    在Linux系统当中,处理文本有三个常用的工具,俗称文本处理三剑客,grep就是其中之一. grep是一种强大的文本搜索工具,它的全称是:Globally search a Regular Expression and Print.工作原理是基于正则表达式引擎按给定的"pattern"对文本进行搜索过滤操作,并把匹配的行打印出来.因此了解要grep的用法我们可以从两方面着手,1:grep命令的用法,2:正则表达式. 1,grep命令的使用方法 首先我们可以使用man命令查看一下grep

    grep、egrep及相应的正则表达式和用法

    一.grep及基本正则表达式 1.grep基本用法        grep  [OPTIONS]  PATTERN  [FILE...]     常用选项: --color=auto:对匹配到的文本着色后高亮显示: -i:忽略字符大小写: -o:仅显示匹配 到的文本自身: -v, --invert-match:反向匹配: -E:支持扩展的正则表达式: -q, --quiet,静默模式,不输出任何信息:   1)首先建立一个test.txt的文本文件   2)然后使用grep和各选项进行匹配搜索:

    llinux文本三剑客之grep、egrep及相应的正则表达式和用法

    Linux文本三剑客之grep族以及相应的正则表达式 Grep族是什么? Grep族是linux学习中搜索文本的重要工具,它基于使用正则表达式来快速简洁的搜索你想要查看的文本.是搜索文本的不二之选 什么时候及在哪里使用grep呢? 上面咱们说到了,grep是文本搜索工具,所以当我们要搜索文本,有搜索文本的需要时我们就可以是使用grep工具. 下面我们来谈谈如何使用grep族命令以及涉及到的正则表达式的内容 文本搜索工具:grep族:grep, egrep, fgrep Linux上文本处理三剑客

    Linux grep,egrep及相应的正则表达式用法详解

    linux在进行文本处理过程中的文本搜索工具称为正则表达式.文本搜索工具有grep.egrep.fgrep,egrep为正则表达式的扩展正则表达式,fgrep用于搜索文本字符串,与 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式.grep的含义为: global search Regular expression and Print out the line. 正则表达式(REGular EXPression REGEXP)是由元字符及正常字符所书写的模式,其中的

    grep egrep及相关的正则表达式用法

    一.什么是正则表达式 在编写处理字符串的时候,经常需要查询某些符合复杂规则的字符串,正则表达式就是描述这些规则的工具. 正则表达式有基本表达式和扩展正则表达式.扩展正则表达式,是基本正则表达式的补充.有些元字符,稍有不同. 二.正则表达式的组成部分: 由元字符及正常字符所书写,元字符不表达字符本意,而表达控制或通配的功能: 2.1基本正则表达式/扩展正则表达式元字符 字符匹配:[基本/扩展正则表达式元字符相同] 基本/元字符: 扩展/元字符: 说明: . . 匹配任意单个字符 [] [] 匹配指

    Linux正则表达式grep,egrep 及相应的正则表达式用法详解

    一.正则表达式介绍: 所谓正则,又称正则表达式.正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作"匹配"): 2. 可以通过正则表达式,从字符

    Linux中 grep/egrep的命令收集

    语法: grep  [-cinvABC]  'word'  filename -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 -v :打印不符合要求的行 -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行 -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行 -C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行 例题: 包含 'halt' 的行以及这行下面的两行都打印出: