grep(Globally search a Regular Expression and Print), 全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。

grep选项:

grep  [OPTIONS] PATTERN  [FILE...]

grep  [OPTIONS] [-e PATTERN | -f FILE]  [FILE...]

grep常用参数

--color:将关键字部分使用颜色显示

  1. [root@node1 ~]# alias cgrep='grep--color=auto'

-v:反向匹配,显示不能被模式匹配到的行

-o:仅匹配被模式匹配到的字串,非整行

-i:不区分大小写

-E:支持扩展

-n:显示行号

-A:后面可加数字,为after的意思,除了列出该行外,后续的 n 行也列出來;

-B:后面可加数字,为bfter的意思,除了列出该行外,后续的 n 行也列出來;

-C:前后各显示一行

grep正则表达式

. (小数点):任意单个字符

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

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

所有小写字母:  [a-z],[[:lower:]]

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

所有字母:      [[:alpha:]]

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

空格:          [[:space:]]

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

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

*(星号):表示重复前一个字符任意次

.*(点星号):表示匹配任意长度的任意字符

\:   表示前一个字符出现0次或者1次

\{m\}: 表示匹配前一个字符m次

\{m,n\}:   表示匹配前一个字符至少m次,最多n次

\{m,\}:    表示匹配前一个字符至少m次

\{0,n\}:   表示匹配最多n次

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

^:锚定行首

$:锚定行位

\<:锚定词首

\>:锚定词尾

分组:

\(ab\)*xy

引用:

\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容,意思是说前面出现一次,在\1这也要出现一次

grep练习

1、     显示/proc/meminfo文件中的以大小写s的开头的行

1
2
3
4
[root@node1 ~]# grep -i '^s' /proc/meminfo 
SwapCached:            0 kB
SwapTotal:       2031612 kB
SwapFree:        2031612 kB

2、     取出默认shell为非bash的用户

1
[root@node1 ~]# grep -v "bash$" /etc/passwd |cut -d: -f1

3、     取出默认shell为bash的且其ID号最大的用户

1
[root@node1 ~]# grep "bash$" /etc/passwd |cut -d: -f1|sort -n -t: -k3|tail -1

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

1
[root@node1 ~]# grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit

5、     显示/boot/grub/grub.conf中至少有一个空白字符的行

1
[root@node1 ~]# grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf

6、     查出/etc/passwd中一位数或两位数

1
[root@node1 ~]# grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd

7、     找出ifconfig命令结果中的1到255之间的整数

1
[root@node1 ~]# ifconfig |grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"

8、     添加用户bash和testbash,而后找出当前系统上于其他用户名和默认shell相同的用户

1
[root@node1 ~]# grep “^\([[:alnum:]]\{1,\}\)\>.*\1$” /etc/passwd

9、   找出netstat-tan命令执行的结果中以“LISTEN”或“ESTABLISHEN”结尾的行

1
netstat -tan | grep -E "(LISTEN|ESTABLISHED)[[:space:]]*"

来自为知笔记(Wiz)

grep命令学习的更多相关文章

  1. Linux中grep命令学习

    1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小 ...

  2. Linux输入输出重定向和文件查找值grep命令

    Linux输入输出重定向和文件查找值grep命令 一.文件描述符Linux 的shell命令,可以通过文件描述符来引用一些文件,通常使用到的文件描述符为0,1,2.Linux系统实际上有12个文件描述 ...

  3. grep命令输出显示高亮字

    grep命令执行后,终端上输出显示颜色可以加"--color=auto"的参数. 另外的两个办法是: 1.设置环境变量: export GREP_OPTIONS="--c ...

  4. Linux学习历程——Centos 7 grep命令

    一.命令简介 grep 命令用于在文本中执行关键词搜索,并显示匹配的结果. 由于grep命令参数很多,这里只列出一些常用的参数. 参数 作用 -b 将可执行文件当作文本文件来搜索 -c 仅显示找到的行 ...

  5. Linux常用命令学习2---(文件搜索命令locate find、命令搜索命令whereis which、字符串搜索命令grep、帮助命令man)

     1.文件搜索命令:locate [文件名]    在后台数据库中按文件名搜索,搜索速度比find快,耗费资源更少    例子:locate test.txt,就会显示文件名包含 test.txt的所 ...

  6. linux命令学习(1):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  7. Linux命令学习-grep

    1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局 ...

  8. linux shell编程学习笔记(二) --- grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全局正则表达 ...

  9. shell脚本学习指南-grep文本搜索命令-学习(3)

    1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expression Print,表示全 ...

随机推荐

  1. php文件上传参考配置与大文件上传

      PHP用超级全局变量数组$_FILES来记录文件上传相关信息的,在php文件上传之前,可通过调节php.ini中相关配置指令,来控制上传相关细节. 1.file_uploads=on/off   ...

  2. HTML5和CSS3的一些新特性

    html5有哪些新特性.移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5? 新特性: 1. 拖拽释放(Drag and drop) 2. 语义化更好的内容标 ...

  3. 使用JavaScript实现复选框全选与取消的功能

    实现效果: html代码: <body> <input type="checkbox" id="checkAll"/>全选<br& ...

  4. liunx 下 部署并运行java项目(非web)

    1. 将这三个包上传到liunx上,之后写一个run.sh 的脚本文件,然后在lib包中上传包<sunjce-provider.jar>包. 2.启动run.sh( ./run.sh st ...

  5. ldap + kerberos + google authentication 实现两步验证

    第一步:ldap + kerberos 整合  ,参考之前的文章 第二步:google authentication 安装配置,参考之前的文章 第三步:整合 ldap + kerberos + goo ...

  6. U盘被写保护如何解除 (转)

    U盘被写保护如何解除   在使用U盘的时候,一直都很正常,但是突然有一天,U盘被提示被写保护了,不能够进行读写数据,如果这时正着急使用,一定会被气疯了吧,其实解决这个问题,是非常简单的. U盘被写保护 ...

  7. DOM扩展之HTML5 插入标记

    11.3.6 插入标记 当需要在文档中插入大量的HTML标记时,通过DOM操作就会是非常麻烦的,相对而言,使用插入标记的技术,直接插入HTML字符串不仅简单而且更快.以下插入标记相关的DOM操作已经纳 ...

  8. ORACLE各种小指令

    清空表中所有记录truncate table et_xxxxxx 删除一条数据 DELETE FROM zhubajie_member.mb_web_login WHERE nickname='m_3 ...

  9. Linux内核分析——进程描述与创建

    20135125陈智威 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验内容 ...

  10. MySQL中的information_schema数据库详解

    information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式.什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等.有些时候用于表述该信 ...