本节学习的命令:grep

本节学习的技能:

      grep对文本的匹配

      正则表达式的使用

知识点十:grep及正则表达式(4_4)

grep,egrep,fgrep:

  grep: 根据模式搜索文本,并将符合模式的文本行显示出来。

  Pattern(模式): 文本字符和正则表达式的元字符组合而成匹配条件

语法定义: 
  grep [options] PATTERN [FILE...]     -i:表示忽略大小写     --color:把匹配到的值显示颜色     -v: 显示没有被模式匹配到的行     -o:只显示被模式匹配到的字符串
文件名通配, globbing(回顾)

  *: 任意长度的任意字符

  ?:任意单个字符

[]:匹配指定范围内的任意单个字符
[^]: 匹配指定范围之外的任意单个字符
 grep 'root' /etc/passwd  --只显示/etc/passwd文件中符合查找‘root’的行

 grep --color 'root' /etc/passwd

 alias grep='grep --color'
grep 'root' /etc/passwd grep -v 'root' /etc/passwd
grep -o 'root' /etc/passwd

grep命令测试

正则表达式(REGular EXPression, REGEXP):

  元字符:

    .    : 匹配任意单个字符

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

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

        字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]

    匹配次数(贪婪模式)

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

          数据:a, b, ab, aab, acb, adb, amnb

          匹配结果:a*b:b,ab,aab,acb,adb,amnb

             a\?b:b,ab,aab,acb,adb,amnb

               a.*b:ab,aab,acb,adb,amnb

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

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

      \{m,n\}  :匹配其前面的字符至少m次,至多n次

        \{1,\}:匹配前面的字符至少1次

     \{0,3\}:匹配前面的字符1到3次

    位置锚定:

      ^  : 锚定行首,此字符后面的任意内容必须出现在行首

      $  : 锚定行尾,此字符前面的任意内容必须出现在行尾

      ^$  : 空白行

      \<或\b  : 锚定词首,其后面的任意字符必须作为单词首部出现

      \>或\b  : 锚定词尾,其前面的任意字符必须作为单词的尾部出现

    分组:

      \(\)

      后向引用

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

        \2:

        \3:

 --正则表达式
grep 'r..t' /etc/passwd vi a.txt
数据
a
b
ab
aab
acb
adb
amnb grep 'a*b' a.txt
grep 'a.*b' a.txt
grep 'a\?b' a.txt grep 'a\{1,3\}b' a.txt grep '^r..t' /etc/passwd
grep 'w$' /etc/inittab
grep 'b..h$' /etc/passwd
grep '^$' /etc/inittab grep '[[:digit:]]$' /etc/inittab
grep '[[:space:]][[:digit:]]$' /etc/inittab vi test2.txt
数据:
This is root.
The user is mroot.
rooter is a dog's name.
chroot is a command.
mrooter is not a word. grep 'root\>' test2.txt
grep '\<root' test2.txt
grep '\<root\>' test2.txt grep '\(ab\)*' a.txt vi test3.txt
数据:
He love his lover.
She like her liker.
He like his lover. grep 'l..e' test3.txt
grep 'l..e.*l..e' test3.txt
grep '\(l..e\).*\1' test3.txt grep '\([0-9]\).*\1$' /etc/inittab

正则表达式测试

课后作业:

 练习:
、显示/proc/meminfo文件中以不区分大小的s开头的行;
grep -i '^s' /proc/meminfo
grep '^[sS]' /proc/meminfo
、显示/etc/passwd中以nologin结尾的行;
grep 'nologin$' /etc/passwd 取出默认shell为/sbin/nologin的用户列表
grep "nologin$' /etc/passwd | cut -d: -f1 取出默认shell为bash,且其用户ID号最小的用户的用户名
grep 'bash$' /etc/passwd | sort -n -t: -k3 | head - | cut -d: -f1 、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;
grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab 、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep ':[0-9]:' /etc/inittab 、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;
grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf 、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;
grep '^\([0-9]\).*\1$' /etc/inittab 练习:
、找出某文件中的,位数,或2位数;
grep '[0-9]\{1,2\}' /proc/cpuinfo
grep --color '\<[0-9]\{1,2\}\>' /proc/cpuinfo 、找出ifconfig命令结果中的1-之间的整数; 、查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息, 文件为/etc/passwd
grep '^student\>' /etc/passwd | cut -d: -f3
id -u student student1
student2 练习:分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:
l1::wait:/etc/rc.d/rc
l3::wait:/etc/rc.d/rc grep '^l\([0-9]\):\1.*\1$' /etc/inittab

课后练习

linux初级学习笔记十:linux grep及正则表达式!(视频序号:04_4)的更多相关文章

  1. linux初级学习笔记九:linux I/O管理,重定向及管道!(视频序号:04_3)

    本节学习的命令:tr,tee,wc 本节学习的技能: 计算机的组成 I/O管理及重定向     管道的使用 知识点九:管理及IO重定向(4_3) 计算机组成: 运算器.控制器: CPU 存储器:RAM ...

  2. linux初级学习笔记七:linux用户管理,密码和组命令详解!(视频序号:04_1)

    本节学习的命令: 用户管理命令:useradd,userdel,id,finger,usermod,chsh,chfn,passwd,pwck, 组管理命令:groupadd,groupmod,gro ...

  3. linux初级学习笔记三:linux操作系统及常用命令,及如何复制和移动文件!(视频序号:02_4)

    本节学习的命令:cp,mv,install,du,read 本节学习的技能:文件的移动与复制 cp( copy):复制和移动文件 cp SRC DEST -r:递归复制一个目录及其目录中的所有文件 - ...

  4. linux初级学习笔记二:linux操作系统及常用命令,文件的创建与删除和命名规则,命令行展开以及linux中部分目录的作用!(视频序号:02_3)

    本节学习的命令:tree,mkdir,rmdir,touch,stat,rm 本节学习的技能:Linux中主要的目录作用以及特殊的目录文件: 文件的命名规则,命令行展开: 文件的创建与删除: Linu ...

  5. linux初级学习笔记一:linux操作系统及常用命令,及如何获取命令的使用帮助!(视频序号:02_1,2)

    本节学习的命令:ls,cd,type,pwd, printenv, hash, date, clock, man, hwclock, info, cal, echo, printf, file! 本节 ...

  6. LINUX编程学习笔记(十四) 创建进程与 父子进程内存空间

    1什么是进程:进程是一个执行中的程序 执行的程序: 代码->资源->CPU 进程有很多数据维护:进程状态/进程属性 所有进程属性采用的一个树形结构体维护 ps  -a//所有进程 ps - ...

  7. linux初级学习笔记八:linux权限管理及权限管理命令详解!(视频序号:04_2)

    本节学习的命令:chown,chgrp,chmod,openssl,umask 本节学习的技能: 文件权限详解及对其的操作 生成随机密码命令 用遮罩码对用户权限进行修改 站在用户登陆的角度来说SHEL ...

  8. linux初级学习笔记六:linux用户及权限详解!(视频序号:03_4)

    本节学习的命令:/etc/passwd,/etc/shadow,/etc/group文件详解 本节学习的技能: 安全上下文 文件与目录的权限管理 影子命令 用户,用户组类别详解 /etc/passwd ...

  9. linux初级学习笔记五:bash特性详解!(视频序号:03_2,3)

    本节学习的命令:history,alias,ualias,\CMD 本节学习的技能:   bash的特性 光标跳转 查看命令历史 命令历史的使用技巧 给命令起别名 命令替换 文件名通配符 shell: ...

随机推荐

  1. 矩阵乘法 BZOJ 2738

    矩阵乘法 [问题描述] 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. [输入格式] 第一行两个数N,Q,表示矩阵大小和询问组数:接下来N行N列一共N*N个数,表示这个矩阵: ...

  2. Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)

    JS用全局变量标记状态,方法中动态修改全局变量以标记状态是一个重要思想. 需求:组合条件查询数据,查询完之后填充到模态框中,开启模态框,模态框中有组合条件查询,此时查询只需要更新模态框表格数据不需要开 ...

  3. mongodb的入门学习

    mongodb的入门学习 简介: MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...

  4. hdu 4857 逆拓扑+大根堆(priority_queue)

    题意:排序输出:在先满足定约束条件下(如 3必需在1前面,7必需在4前面),在满足:1尽量前,其次考虑2,依次.....(即有次约束). 开始的时候,只用拓扑,然后每次在都可以选的时候,优先考虑小的, ...

  5. PAT (Advanced Level) 1086. Tree Traversals Again (25)

    入栈顺序为先序遍历,出栈顺序为中序遍历. #include<cstdio> #include<cstring> #include<cmath> #include&l ...

  6. ubuntu下安装翻译软件

    原文: http://sixipiaoyang.blog.163.com/blog/static/6232358820144146386437/ Ubuntu下常用的翻译软件有StarDict,Gol ...

  7. JS标签获取另一个页面传过来的href值

    a href=b.html?id=楼主>B页面</a>b.html中的获取函数:function getParam(){C1=window.location.href.split(& ...

  8. C语言枚举类型(Enum)

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  9. 函数柯里化 curry

    一.函数柯里化的特性: (1)参数复用 $.ajax // 示例一 function ajax(type,url,data) { var xhr = new XMLHttpRequest(); xhr ...

  10. c程序设计语言第一章3

    字符数组是C语言中最常用的数组类型.下面我们通过编写一个程序,来说明字符数组以反操作字符数组的函数的用法.该程序读入一组文本行,并把最长的文水行打印出来.该算法的基本框架非常简单: while (还有 ...