学习笔记第二十五节课

正则介绍_grep

  • 学习笔记第二十五节课
  • 正则就是一串有规律的字符串,包含特殊符号。
  • 对以后的写shell脚本很大的帮助。可以实现很多复杂的需求。

第一个工具 grep
学习笔记第二十五节课

  • grep 用来过滤关键词。
  • -c 行数,过滤出来的这些行有多少行。
  • 做实验,先把etc/passwd 作为一个样本文件 cp 到 创建的grep目录下。
  • 学习笔记第二十五节课
  • 然后 用grep 过滤 nologin grep有一个好处,在过滤关键词的时候,会自动对关键词上颜色。
  • 学习笔记第二十五节课
  • 学习笔记第二十五节课
  • 然后用-c 选项 可以显示刚才过滤的 有多少行。
  • 学习笔记第二十五节课
  • -n选项可以显示带颜色的 行号。
  • 学习笔记第二十五节课
  • -i选项不区分大小写。 比如 文件中有一个nologin 是大写的,那在-n显示的时候 就不会过滤出来 但是加了i 就会显示。
  • 学习笔记第二十五节课
  • -v是取反的意思,就是一个文件中,不带关键词的都被过滤掉了 -v就是把被过滤掉的显示出来。
  • 学习笔记第二十五节课
  • -r就是遍历所有子目录。比如过滤 包含root 的etc下所有目录,它就会显示出来。 不加-r 他会提示这是一个目录。
  • 学习笔记第二十五节课
  • 学习笔记第二十五节课
  • 只能针对文件去做 不加r 的过滤。
  • 学习笔记第二十五节课
  • 在刚才的-r 过滤中也过滤出了 passwd 的含有root的 内容,如果向上翻找很麻烦的话,可以重定向到一个文件里去,这样就能很快查看到 你想要的结果了。
  • 学习笔记第二十五节课
  • -A +数字 就是把你过滤出来的关键词加上关键词下面的数字行 比如 A2 就会列出 关键词下面的两行。
  • 学习笔记第二十五节课
  • -B和A类似 是以上数字行
  • 学习笔记第二十五节课
  • -C是A和B的结合 会列出关键词行数的上下各数字行。
  • 学习笔记第二十五节课

grep/egrep 示例

学习笔记第二十五节课

  • grep的用法有很多,比如过滤文件中的数字。 加上-v就是除了数字外都过滤出来,但是这个文件中没有不包含数字的行。
  • 学习笔记第二十五节课
  • grep 也可以过滤 文件中以某个字母或者符号开头的 用^ ,^的意思是以什么开头,。加上-v就是除了us开头的都过滤出来。
  • 学习笔记第二十五节课
  • 以后可能会看很多服务相关的配置文件,就可以用这个方法,把带#的注释的行过滤掉。
  • 还有一种用法,就是把除了数字或者字母 或者特殊符号 以外的都给过滤出来。这个和过滤数字正好相反。
  • 学习笔记第二十五节课
  • 还有个操作就是 ^[^0-9] 这个字符串的意思就是以非数字的开头的行 过滤出来、
  • 学习笔记第二十五节课
  • ^ 这个字符 放在方括号外面 是以什么开头 放在里面就是取非。
  • grep 'r.0' passwd 【.】点的意思就是任意一个字符,可以从操作中看出,r和o直接是任何字符都可以过滤出来。包括数字 特殊符号 还有. 本身、
  • 学习笔记第二十五节课
  • grep 'mer' passwd 的意思是 在*前面的字符重复0-n次 这个n是表示多少次都可以。
  • 学习笔记第二十五节课
  • 【.*】组合起来就是 过滤所有字符,因为.表示任意字符。
  • 学习笔记第二十五节课
  • {}在grep中直接写是没有任何意义的 就是一个花括号。 但是在正则中用法可以表示前面字符重复的一个范围,就是加上脱译。
  • 学习笔记第二十五节课
  • 如果觉得这样写很麻烦 加脱译符号很别扭, 可以用egrep 这样就不用脱译符号就可以识别了。
  • 或者是不用egrep 用grep -E
  • 学习笔记第二十五节课
  • 学习笔记第二十五节课
  • 也可以写多个字符 的重复范围,要加() 表示一个整体,加这个也要egrep 或者 -E 来脱译这个()。
  • 学习笔记第二十五节课
    • 挺像的, 想用+ 要脱译或者用egrep +号是前面的字符一次或者多次, 没有0。 (也就是说比如mer er前面如果没有m 就是代表er前面为0,也会把er显示出来,但是+er的话 不显示0 就是只会显示 带有m和er 的字母组合) *是0到多次。
  • 学习笔记第二十五节课
  • ?表示在?前面的字符重复次数为0或者1 要么有 要么没有。(比如m?er er前面如果m很多 只会显示一个,)
  • 学习笔记第二十五节课
  • | 在这里表示的意思是或者。
  • 学习笔记第二十五节课

猜你喜欢

转载自blog.51cto.com/13645927/2107869