grep与正则表达式:

1、grep程序
 Linux下有文本处理三剑客 -- grep sed awk
 grep:文本 行过滤工具
 sed: 文本 行编辑器(流编辑器)
 awk:报告生成器(做文本输出格式化)

grep
  包含三个命令:grep egrep fgrep ,它们是用来进行 行模式(pattern)匹配的
  egrep = gerp -E //使用扩展的正则表达式进行匹配
  fgrep = fast grep  //只使用文件通配符进行匹配
  *grep默认使用正则表达式进行文本匹配*
  
 grep的用法:
  grep [option] ... PATTERN [filename]

grep的常见选项 -- option
  -E  支持使用扩展的正则表达式(ERE)(regexp)
  -P  使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表示式引擎都不相同,甚至sed grep awk使用的regexp引擎也不相同)
  -i   忽略大小
  -v  进行反选
  -o  仅仅输出匹配的内容(默认输出的是匹配到的行)
  --color=auto  语法着色
  -n  显示行号
  -w  匹配固定的单词
  
 PATTERN--正则表达式
  作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身含义,就需要 \ 进行转义;
  
  回顾:文件通配符(globbing)
   * ? [ ] [^ ]
  
  1、字符匹配
   .  任意一个字符  ?
   [ ]  范围内的任意一个字符
   [^ ]  范围外任意一个字符
   字符类:[:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]
  2、次数匹配
   * 匹配前面的字符0次到无数次
   \?匹配前面的字符0次到1次
   \+ 匹配前面的字符1次到n次
   \{m\} 配置前面的字符m次
    a\{7\} aaaaaaa
   \{m,n\} 匹配前面的字符m到n次
   \{0,n\} 匹配前面的字符0次到n次  【0要不要?】
   \{m,\} 匹配前面的字符至少m次
  3、位置锚定
   ^ 锚定行首
   $  锚定行尾
   \b 锚定词首和锚定词尾
   \>  锚定词尾
   \<  锚定词首
    <\root\>  rooter
  4、分组
   abc*  abcccc  abc我们要看成一个整体
   \(\)  示例:\(abc\)*  abcabcabc  abcccc
   **分组特性:默认情况下,Linux系统会为分组指定变量 ,变量的表示形式 \1 \2 \3 ...

\(\(立秋\)已过\),\(香港\)依旧不宁。多区出现非法集会,\(暴力\)示威者破坏公物、堵塞干道,或以激光、砖块袭警、投掷汽油弹,更有甚者公然殴打内地游客及记者。随着示威升级,怂恿“反中乱港”的幕后势力也正慢慢浮现。

示例:\(ab+\(xy\)*\)   其中 \1 = ab+\(xy\)* , \2 = xy
            abbbbbxyxyxyabxy

练习:
1、显示/proc/meminfo文件中大小s开头的行
 grep -i "^s" /proc/meminfo
2、显示/etc/passwd文件中不以/bin/bash结尾的行
 grep -v "/bin/bash$" /etc/passwd
3、显示/etc/passwd文件中UID号最大的用户的用户名
 sort -n -t: -k3 /etc/passwd | tail -1 | cut -d: -f1
4、如果用户root存在,显示其默认的shell程序
 grep "^root\>" /etc/passwd &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
 id root &> /dev/null && grep "^root\>" /etc/passwd | cut -d: -f7
5、找出/etc/passwd中的两位或三位数
 grep "[0-9]\{2,3\}"  /etc/passwd
  -w   //匹配固定单词
  \<[0-9]\{2,3\}\>
  \b[0-9]\{2,3\}\b
6、显示/etc/rc.d/rc.sysinit文件中,至少以一个空白字符开头的且后面为非空白字符的行
 grep "^[[:space:]]\+.*[^[:space:]]$" /etc/rc.d/rc.sysinit
7、找出”netstat -tan”命令的结果中,以“LISTEN”后跟0、1或多个空白字符结尾的行
 netstat -tan | grep "LISTEN[[:space:]]*$"
8、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin):而后找出/etc/passwd文件中用户名同shell名的行
 useradd bash           /bin/bash
 useradd testbash
 useradd basher
 useradd -s /sbin/nologin nologin
 grep "\(^[[:alnum:]]\+\>\).*\1$" /etc/passwd
9、IP地址如何匹配?
 ip地址:
  0-255.0-255.0-255.0-255
  0-255
  2 0-4 0-9  2[0-4][0-9]
  2 5 0-5 25[0-5]
  1 0-9 0-9  1[0-9][0-9]
  0 0-9 0-9  [0-9][0-9]
  0 0    0-9  [0-9]
 
 2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9]\.2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9]\.2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9]\.2[0-4][0-9]|25[0-5]|1[0-9][0-9]|[0-9][0-9]|[0-9]
 \((2[0-4][0-9])|(25[0-5])|(1[0-9][0-9])|([0-9][0-9])|([0-9])\)\.\1\.\1\.\1

\<[1-9]|[1-9][0-9]|1[0-9]{2}|2[01][0-9]|22[0-3]\>
1-9
1-9 0-9
1 0-9 {2}
2 [01] 0-9  200 - 219
2 2 0-3   220 - 223

\(\.\<[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]\>\){2}
0-9
1-9 0-9
1 0-9 0-9
2 0-4 0-9
2 5 0-4
\( \){2}

\.\<[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]\>
1-9
1-9 0-9
1 0-9 0-9
2 0-4 0-9
2 5 0-4

原文地址:https://www.cnblogs.com/dongxu2019/p/11360449.html

时间: 2024-11-13 09:59:13

grep与正则表达式:的相关文章

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和正则表达式 1.grep:Global search REgular expression and Print out the file 作用:文本搜索工具,根据用户指定的模式对目标文件逐行进行匹配,打印匹配到的行 模式:由正则表达式字符及文本字符编写的过滤条件 格式: grep [options] pattern file[...] --color=auto 对匹配到的文本着色显示 -v 显示不能够被pattern匹配的行 -i 忽略file中文件字符的大小写 -n 显示匹配的行号

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

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

grep及正则表达式随笔

grep [acivn] [--color=auto] '查找字符串' filename -a:将binary文件以text文件的方式查找数据 -c:计算找到'查找字符串'的次数 -i:忽略大小写 -v:反向选择 -n:将查找结果列出行号 --color=auto:查找结果中关键字着色 **********grep使用例子********** (1)列出一个目录下目录的名称: ll |grep '^d' |awk '{print $9}' 其中awk中$后面是列的位置 (2)列出一个文件,去除空

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,文本

grep以及正则表达式

正则表达式是基本的文本处理常识,理解和掌握好grep以及正则表达式对进行文本处理尤为重要 Grep 根据模式(文本字符和正则表达式的元字符组合而成匹配条件)搜索文本,并将符合模式的文本行显示出来. 1.1grep家族: grep:基本正则表达式使用的命令 egrep:扩展正则表达式使用的命令 fgrep(fast grep):不支持正则表达式,在没有正则表达式的字符串中的使用效率非常高,cup资源消耗少 1.2grep命令格式 grep  [options] PATTERN [FILE...]

[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则是在进行文本通配时把所有的字母都当做单词来处

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

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