学习笔记第二十五节课
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记第二十五节课相关的知识,希望对你有一定的参考价值。
正则介绍_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很多 只会显示一个,)
- | 在这里表示的意思是或者。
以上是关于学习笔记第二十五节课的主要内容,如果未能解决你的问题,请参考以下文章