关于作者李先生(Lemon),高级运维工程师(自称),SRE专家(target),35岁梦想买辆保时捷,喜欢钻研底层技术并认为打好基础才是王道。所有新技术都离不开操作系统(CPU、内存、磁盘)、网络等,坚持输入输出,记录自己的学习,在平凡中不断前行,总有一天会遇到不一样的自己。公众号:王运维(ID:Leeeee_Li)。1.前言我平时喜欢做笔记。我干了四五年,笔记有几千条。最近离职,加上职场瓶颈,准备复习整理相关笔记,整理知识点,后面可能会有一系列的博文输出,从基础到高级。2.什么是GrepGlobalRegularExpressionPrint全局正则表达式Grep是一个Linux/Unix命令行工具,用于在指定文件中搜索字符串。文本搜索模式称为正则表达式。当它找到匹配项时,它会输出包含结果的一行。grep命令在搜索大型日志文件时非常方便。语法:grep[options]pattern[files]3.常用参数-c:只输出匹配行数-h:打印出匹配行,但不显示其文件名-i:不区分大小写-l:多次查询只输出文件中包含匹配字符的文件名-n:打印匹配的行和行号-v:反向匹配,即显示不匹配的行-w:匹配整个单词,不匹配整个字符串-b:显示匹配-o:只显示匹配的字符串-s:不显示错误信息-eexp:匹配倍数-E:使用正则匹配4.例子一:匹配项标记颜色echo"Thisisaword\nheihei"|grepword--color=auto2:取出包含root的/etc/passwdgreproot/etc/passwdorcat/etc/passwd|greproot3:取出不包含root的/etc/passwdgrep-vroot/etc/passwdorcat/etc/passwd|grep-vroot4:在demsg输出的信息中找到包含eth的行,并输出行号,颜色为dmesg|grepeth-n--color=auto5:通过demsg输出的信息找到eth所在的行,找到前两行和后三行包含ethdmesg|grepeth-n-A3-B2--color=auto5.grepecho$?#的退出状态0:表示成功#1:表示不匹配#2:表示参数中的文件不存在6、应用场景1:匹配行ifconfig|的上下文grep-C3"Linkencap"-An后n行,A记为(After)-Bn前n行,B记忆为(Before)-Cn前n行,后n行,C内存为(居中)2:使用-c统计数量grep-c"baidu.com"file.txt3:根据文件内容搜索目录grep"declare"#在当前目录中搜索grep-r"declare"#在当前目录及子目录中搜索grep-r-l"declare"#只查找文件名,不查找具体行grep-R--exclude-dir="filename"baidu.com#排除某个不匹配的目录4.过滤掉评论行grep^[^#]文件名5。过滤掉带空格的注释行grep"^\s*[^#\t].*$"filename6.在file2中查找包含file1的字符串的字符串ffile1:ddfddcfile2:shinjldinadcddfddfgrep-ffile1file2#得到的结果:#adcddf#ddf7,psaux|的区别grepinit和psaux|grep[i]nitps辅助|grep初始化:psaux|grep[i]nit:第一个init的时候,她也会getgrepinit进进程,当它能匹配到init的第二个[i]nit的时候,它会getgrep[i]nit进进程,但是[i]nit只能匹配init和nit,只有一个echogrepinit|grepinitechogrepinit|grep[i]nitechogrep[i]nit|grepinitechogrep[i]nit|grep[i]nit七,grep-E和grep的区别1.如何使用grep-E"^[a-zA-Z0-9]"filenamegrep"^[a-zA-Z0-9]"filename#如果不加E,a会出现匹配错误2.下面两个例子两种写法都可以达到同样的目的,使用-E或者不使用-Ecata.txt|grep-oE'id=[0-9]{9,10}'cata.txt|grep-o'id=[0-9]\{9,10\}'
