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. arduino--1s间隔闪烁灯

    初始使用Arduino,写了这么个小功能:1s间隔闪烁灯 void setup() { pinMode(,OUTPUT);//Set 13Pin as OUTPUT } void loop() { d ...

  2. IOS setValue forKey

    NSObjiect *obj:[obj setValue:value forKey:@"cpname"]复制代码的时候都会出现这个异常this class is not key v ...

  3. 【转】 Easy RadControl 之 RadGridView(Silverlight)

    1.不显示第1列即列指示器(Row Indicators) 在 telerik:RadGridView中设置属性   RowIndicatorVisibility="Collapsed&qu ...

  4. .NET笔试题集(二)

    1.using关键字有什么用?什么是IDisposable? using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结 ...

  5. Hibernate映射一对一关联关系

    映射一对一关联 Hibernate提供了两种映射一对一关联关系的方式,分别是按照外键映射和按照主键映射. 下面是员工表和档案信息表(员工和档案表之间的关系是一对一的关系)  档案表(dept) pub ...

  6. ACM_1001_Exponentiation 详解

    参考:http://blog.csdn.net/rually/article/details/8585268 #include<iostream> using namespace std; ...

  7. NSIS 让程序以管理权限运行

    用NSIS向导,制作安装包,会生成NSI扩展的脚本文件,按F9,即可以生成安装文件. 如果要以管理员权限运行,直接在nsi脚本中,添加RequestExecutionLevel admin Name ...

  8. Django01

    1.创建django project 2.创建app 在一个project下可以创建多个app,比如运维系统这个project下面包含监控app.cmdb app等等,这些app共享project里的 ...

  9. Linux中的find(-atime、-ctime、-mtime)指令分析

    本篇主要对find -atime(-ctime..mtime)指令的用法.参数.运行情况进行分析 用法: find . {-atime/-ctime/-mtime/-amin/-cmin/-mmin} ...

  10. DELL vostro V5460 装mSATA 半高SSD硬盘后装win8.1系统

    1.介绍 DELL vostro V5460的超极本性能虽然不是那么好,但的确是我觉得样子最好看的一款.满足了,轻,薄.如果是红色的,则很适合女生用. 2.缺点 这款笔记本最大的缺点,就是有的无线网卡 ...