grep:文本搜素工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能被模式所匹配到的行

包含三个命令:grep、egrep(相当于grep -E 扩展的正则表达式)和fgrep(相当于grep -F 只能字符串匹配)

格式:

  grep [options] PATTEN filename

options

grep -v (--invert-match):反向匹配,显示不能被表达式匹配的行

grep -o (--only-matching):仅显示被模式匹配到的字串,而非整行,将匹配到的字符串一行一个显示

grep -n :打印行号

grep -q:静默模式,不输出任何信息,用于写脚本时的判断,和&>/dev/null一样

grep -c :计算找到匹配项的行数,1行算1次。只显示行数,不显示匹配到的行内容

grep -i :不区分字符大小写

grep -B 数字:before显示匹配行,和其上面n行

grep -A 数字:after显示匹配行,和其下面n行

grep -C 数字:显示匹配行,和上下n行

grep -e :实现多个选项间的逻辑or关系,例如grep -e 'cat' -e 'dog' filename

grep -w :匹配整个词,用空格、特殊符号隔开的都算一个词

grep -f 后面跟文件,文件中写正则表达式,各个表达式相当于或关系

grep -f f1 f2   #两个文件取交集

grep -E 使用egrep

grep -F 使用fgrep

PATTEN正则表达式:是一类字符所书写出的模式(pattern)

元字符:不表示字符本身的意义,用于额外功能性的描述

基本正则表达式(grep)的元字符:

字符匹配:

.:元字符,代表任意一个字符,包括空格

\.:表示.本身,"\"斜杆是逃逸符后面可接, ! ` [ .

[ ]:指定范围内的任意单个字符

[^]:指定范围外的任意单个字符

[A-Z],[[:upper:]]所有大写字母

[a-z],[[:lower:]]所有小写字母,和通配符匹配文件名有区别

[[:alpha:]]所有字母,大小写

[0-9],[[:digit:]]所有数字

[[:alnum:]]所有数字+字母

[[:blank:]]空白字符(空格和制表符)

[[:space:]]水平和垂直的空白字符(比[:blank:]包含的范围广)

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

[[:graph:]]可打印的非空白字符

[[:print:]]可打印字符

[[:punct:]]标点符号

[[:cntrl:]]不可打印的控制字符(退格、删除、警铃)

次数匹配:用来指定匹配其前面的字符的次数

*:任意次

例如:x*y,xxy,xy,y,指的是x可以出现0,1或者多次

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

\?:0次或1次

例如:x\?y,xy,y,xxy

贪婪模式:尽可能的长的去匹配字符

\+:至少1次

\{m\}:匹配m次,此处的两个\\是转义字符

\{m,n\}:匹配至少M次,至多n次

\{m,\}:匹配至少M次

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

  例如:x\{2,6\}y匹配xxy,xxxy,xxxxy,xxxxxy,xxxxxxy

位置锚定:用于指定字符出现的位置

^:锚定行首

$:锚定行尾

例如:^[[:space:]]\+$  空白组成的行

\<char:锚定词首,\bchar  数字、字母、下划线连起来的都算单词,其他符号都算分隔符

char\>:锚定词尾,char\b

  例如: \<h..o\>,以h开头,o结尾中间跟任意两个字符的单词

    分组:

\(\)

\(ab\)*xy    xy,abxy,ababxy

引用:

\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式的结果字符串

\2

\(a.b\)xy\1  a6bxya6b

或者:

\|  a\|bcd     a或者bcd,整个字符串或者

举例:

1、显示/proc/meminfo文件中以大小写s开头的行
# grep "^[Ss]" /proc/meminfo
# grep -i "^s" /proc/meminfo2、取出默认shell为非bash的用户
# grep -v "bash$" /etc/passwd | cut -d: -f 13、取出默认shell为bash的且ID号最大的用户
# grep "bash$" /etc/passwd | sort -t: -k3 -rn|head -1|cut -d: -f14、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面至少一个空白字符,而后至少一个非空白字符的行
# grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit5、显示/boot/grub/grub.conf中至少一个非空白字符开头的行
# grep "^[^[:space:]]\{1,\}" /boot/grub/grub.conf6、找出/etc/passwd文件中一位数或两位数
# grep "\<[0-9]\{1,2\}\>" /etc/passwd7、查看当前系统上root用户的所有信息
# grep "^root\>" /etc/passwd8、添加用户bash和testbash、basher,而后找出当前系统上其用户名和默认shell相同的用户
# grep "^\([[:alnum:]]\{1,\}\)\>.*\1$" /etc/passwd9、匹配所有非空白行
#grep "." a.txt  10、取目录名
# grep -Eo ".*\<"
# grep -Eo ".*[^/]" | grep -Eo ".*/"11、取基名
# grep -Eo "[^/]+/?$"12、匹配空行
# grep ^$ file13、匹配非空行
# grep -v ^$  file 或 grep .\+ file   14、匹配0.0.0.0~255.255.255.255
grep --color=auto -o "\(\<\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)\>\.\)\{3\}\<\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)\>"15、匹配实际IP地址1.0.0.0-223.255.255.255
grep --color=auto -o "\<\([1-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-1][0-9]\|22[0-3]\)\>\(\.\<\([0-9]\|[1-9][0-9]\|1[0-9]\{2\}\|2[0-4][0-9]\|25[0-5]\)\>\)\{3\}"

egrep:使用扩展正则表达式来创建模式,相当于 grep -E

元字符:

字符匹配:

.:任意单个字符

[ ]:指定范围内的任意单个字符

[^ ]:指定范围外的任意单个字符

次数匹配:

*:匹配其前面的字符任意次

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

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

{m}:匹配前面的字符m次   区别于普通正则表达式

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

{m,}:至少m次

{0,n}:至多n次

锚定

^:行首

$:行尾

\<, \b :词首

\>, \b :词尾

分组:

():分组

Linux命令:grep命令 | egrep命令相关推荐

  1. linux中的grep和egrep命令,Linux之grep和egrep命令总结

    grep / egrep 语法: grep  [-cinvABC]  'word'  filename -c :打印符合要求的行数 -i :忽略大小写 -n :在输出符合要求的行的同时连同行号一起输出 ...

  2. linux中egrep命令的作用,linux之grep和egrep命令

    grep [-cnivrABC--color] 'word' filename --color可以把匹配到的内容字体换成彩色.-n :显示输出内容的行号-c :打印出符合要求的行数-v :打印不符合要 ...

  3. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  4. 编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法...

    bash的特性之多命令执行的逻辑关系: 1.命令替换 COMMAND1 $(COMMAND2) 2.管道 COMMAND1 | COMMAND2 | COMMAND3 ... 3.顺序执行结构 COM ...

  5. shell脚本_ grep和egrep命令

    grep 全称(Global search REgular expression and Print out the line) 作用:文本搜索工具,根据用户指定的文本模式(正则表达元字符以及正常字符 ...

  6. linux里grep和egrep,fgrep的区别

    例子: 1. : 格式: grep [option] pattern filename 注意: pattern如果是表达式或者超过两个单词的, 需要用引号引用. 可以是单引号也可双引号, 区别是单引号 ...

  7. Linux下grep、egrep及fgrep命令详解

    grep命令是linux下的行过滤工具,其参数繁多,下面就一一介绍个个参数的作用,希望对大家有所帮助. grep -- print lines matching a pattern (将符合样式的该行 ...

  8. linux中的grep和egrep命令,Linux grep和egrep命令

    在Linux中,grep是一个非常强大的文本搜索工具,它可以根据用户指定的文本搜索模式对目标文件进行逐行的搜索,然后将被模式匹配到的用户所需要的信息显示出来:那么,egrep呢?从字母组合上看,二者很 ...

  9. linux命令积累之egrep命令

    学搭建Nginx环境,必须要配置的Nginx.conf文件中,如下: #user  nobody; worker_processes  1; #error_log  logs/error.log; # ...

  10. linux中grep与wc命令,Linux高效数据统计命令wc

    原标题:Linux高效数据统计命令wc 主要参数 常见参数如下: -c 统计字节数. -l 统计行数. -m 统计字符数.这个标志不能与 -c 标志一起使用. -w 统计字数.注意,这里的字指的是由空 ...

最新文章

  1. mysql低权限用户getshell_GetShell的姿势总结
  2. 【linux】NXP MFGTools工具配置文件详解
  3. juc java_深入理解JUC(java.util.concurrent)
  4. 预测过去?DeepMind用AI复原古希腊铭文,登Nature封面
  5. 在UE4中创建受《羞辱》启发的环境
  6. 真正的云主机到底是什么样的?
  7. 【C++】错误处理和异常处理
  8. 何恺明一作,刷新7项检测分割任务,无监督预训练完胜有监督
  9. tortoisegit中文_tortoiseGit实用教程
  10. linux登录后出现_bash-4.1#终端提示符异常
  11. HTML DOM Event(事件)
  12. 56. Yii Modules
  13. Java Web 后端技术
  14. 服务器虚拟机迁移的6个步骤,vmware 虚拟机迁移
  15. 启动tomcat时候报错(Error deploying web application directory)
  16. 流程表结构设计第一版
  17. 设计模式-工厂模式(学习)
  18. JS,统计图表大全--三、饼形图(饼图及环形图)
  19. 如何让Join跑的更快?(文末送书)
  20. aix 安装oracle smit install_latest,在AIX 5L上快速部署Oracle 9i

热门文章

  1. 学计算机去西电还是北交,这3所211大学,一点也不逊色于985,各有特色,毕业生同样受欢迎...
  2. PeopleSoft 单点登录
  3. Android 手机蓝牙遥控器解决方案
  4. 两种欧拉角与其对应的旋转矩阵求解
  5. 基于Java毕业设计医院门诊分诊系统源码+系统+mysql+lw文档+部署软件
  6. Linus,一生只为寻找欢笑(上)
  7. 中首清算|软银集团科技股投资损失13亿美元
  8. 【龙芯1c库】封装硬件定时器接口和使用示例
  9. 多人合作时代码提交 git 操作
  10. AutoCAD处理工具Aspose.CAD最新版三大新功能推荐——支持水印、CF2格式和OLE对象