本节学习的命令: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. Python入门--8--字符串

    一.创建.修改字符串 str1='呆呆 槑槑 木木 林林' str1[1] #输出呆 str1[2] #输出' ',也就是空值 str1=str[:5]+'插入乖呆 '+str1[5:] #修改字符串 ...

  2. docker使用 命令

    Dockerfile FROM golang:alpine3. AS build-stage WORKDIR /go/src/mypro.exportReport COPY . . RUN go bu ...

  3. AIO

    IBM® 市场 (英文) 提交   我的 IBM 站点导航   学习 开发 社区 学习 Java technology 内容   概览 简单介绍 Asynchronous I/O 开始简单的异步 I/ ...

  4. 网络安全(超级详细)零基础带你一步一步走进缓冲区溢出漏洞和shellcode编写!

    零基础带你走进缓冲区溢出,编写shellcode. 写在前面的话:本人是以一个零基础者角度来带着大家去理解缓冲区溢出漏洞,当然如果你是开发者更好. 注:如果有转载请注明出处!创作不易.谢谢合作. 0. ...

  5. JavaSE的static、final、abstract修饰符

    static :静态常量,静态方法,静态代码块     静态变量:  静态变量属于类的,使用类名来访问,非静态变量是属于对象的,"必须"使用对象来访问.           注意: ...

  6. Go -- go语言指针

    package main import "fmt" type Test struct { Name string } func change2(t *Test) { t.Name ...

  7. 【Todo】【读书笔记】Career Cup 150笔记

    下载了第五版:/Users/baidu/Documents/Data/Interview/算法与数据结构/<CareerCup+Top+150+Questions+5th.pdf> 参考这 ...

  8. CentOS 6.x安装多GCC版本号,cmake的安装与使用

    操作系统:CentOS release 6.5 (Final) 当前gcc版本号:build=x86_64-redhat-linux                           Thread ...

  9. Effective C++ 条款二 用编译器替换预编译器

    /************************************************************************/ /* C++条款二:用编译器替换预编译器 */ / ...

  10. mac系统下为emacs设置中文字体,解决乱码问题

    近期换了个系统,如今用mac系统. 当打开emacs后,中文支持的不是非常好.有的地方能显示.在.el文件的凝视里显示为口口口口口口口口这种框.例如以下图所看到的 找了半天.是由于中文字体的问题.仅仅 ...