本节学习的命令: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. SHoj 420 购买装备

    购买装备 发布时间: 2017年7月9日 18:17   最后更新: 2017年7月9日 21:05   时间限制: 1000ms   内存限制: 128M 描述 最近盛大的一款游戏传奇世界极其火爆. ...

  2. 大整数类BIGN的设计与实现 C++高精度模板

    首先感谢刘汝佳所著的<算法竞赛入门经典>. 众所周知,C++中储存能力最大的unsigned long long 也是有着一个上限,如果我们想计算非常大的整数时,就不知所措了,所以,我写了 ...

  3. pnputil

    http://mb.yidianzixun.com/article/0FYSZgnB?s=mb&appid=mibrowser C:\Users\Administrator>pnputi ...

  4. 前端MVC Vue2学习总结(九)——Vuex状态管理插件

    一.概要 1.1.Vuex定义与注意事项 Vuex是为vue.js框架更好的管理状态而设计一个插件.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的 ...

  5. linux下二机制文件的查看和编辑

    linux下很多命令都是二机制:/bin/下的各种命令---/bin/sh./bin/cat./bin/dmesg./bin/hostname等 如何查看这些二机制文件: xxd.hexdump 参考 ...

  6. paramiko使用exec_command执行rm -rf删除目录的坑

    paramiko删除目录后的上传操作请参考步骤1.2.3的说明 try: ssh = SSHClient(ip,user) sftpClient = ssh.getSftpClient() outpu ...

  7. oracle学习 第二章 限制性查询和数据的排序 ——03

    这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7  怎样使用转义(escape)操作符 ...

  8. 【Todo】RTP/RTCP/RTSP/SIP/SDP 等多媒体传输和会话协议

    参考 http://m.blog.csdn.net/article/details?id=6211447

  9. 【c++】面向对象程序设计之虚函数详解

    一.动态绑定什么时候发生 当且仅当通过指针或引用调用虚函数时,才会在运行时解析该调用 二.派生类中的虚函数 当我们在派生类中覆盖了某个虚函数时,可以再一次使用virtual指出该函数的性质,但是这么做 ...

  10. [Javascript] Convert a Callback-Based JavaScript Function to a Promise-Based One

    Sometimes, you might want to convert a JavaScript function that accepts a callback to one that retur ...