“四剑客”是运维工作经常要用到的三个命令:find、grep 、sed、awk。 老四:find ---- 用于查找文件所在路径 老三:grep — 用于过滤筛选信息(其它二者也可用于过滤筛选,但是grep对于过滤筛选信息用起来更简单方便) 老二:sed — 用于修改替换文件内容 擅长对文件中的“行”进行操作 (多配合单引号进行使用) 老大:awk — 擅长统计分析文件内容 擅长对文件中“列”进行操作 (多配合单引号进行使用)
还可以使用 -size 参数 --->按照文件的大小来查找, -atime 按照读取的文件的时间来查找 -ctime 按照修改文件内容的时间来查找
grep -B n text file --- 筛选file中text信息的前n行内容 grep -A n text file --- 筛选file中text信息的后n行内容 grep -C n text file --- 筛选file中text信息的前后n行内容 grep -c text file --- 统计text信息在file中出现了*几行*
sed命令:字符流编辑工具(行编辑工具)===按照每行中的字符进行处理 PS:全屏编辑工具 vi/vim sed命令执行原理: 使用sed命令对一个文件进行操作时,只要一行的内容读到内容中,无论它是否是需要的信息,都会默认被显示输出到屏幕上,使用-n 参数可取消这种默认设置。
sed命令作用说明: 01.擅长对行进行操作 02.擅长将文件的内容信息进行修改调整 具体功能: 1)文件中添加信息的能力(增) 2)文件中删除信息的能力(删) 3)文件中修改信息的能力(改) 4)文件中查询信息的能力(查)
文件中如何添加信息
文件中如何删除信息
文件中如何修改信息 注意:若自己要修改文件内容时,并决定写入到磁盘中,一定不能让参数“n”和“i”同时出现 因为使用-n参数输出的内容,会被-i参数写入到文件对应的磁盘位置,这样源文件就会别新的内容真实的覆盖掉。
文件中如何查询信息
总结
sed命令的指令信息: p print 输出信息 i insert 插入信息,在指定行前面插入新的信息 a append 附加信息,在指定行的后面附加新的信息 d delete 删除指定信息 s substitute 替换信息 s###g全局替换 c 替换修改指定的一行的信息 sed命令参数信息 -n 取消默认输出 -r 识别扩展正则 -i 真实编辑文件(将内存中的信息覆盖到磁盘中) -e 识别sed命令多个操作指令**
** 前面的基本用法已经可以满足90%的需要,人个认为想要真正掌握sed,还需要学习一下sed的高级用法,下面就分享一下sed的模式空间和保持空间
模式空间:即使用"sed"命令时,处理文件中一行内容的一个临时缓冲区。处理完一行数据之后就会把模式空间中的内容打印到标准输出,然后自动清空缓存。保持空间:是"sed"命令的另外一个缓冲区,此缓冲区正如其名,不会自动清空,也不会主动把此缓冲区中的内容打印到标准输出中,而是根据以下参数来对数据做出相应的操作: d Delete pattern space. Start next cycle. 删除pattern space的内容,开始下一个循环. h / H Copy/append pattern space to hold space. 复制/追加pattern space的内容到hold space. g / G Copy/append hold space to pattern space. 复制/追加hold space的内容到pattern space. x Exchange the contents of the hold and pattern spaces. 交换hold space和pattern space的内容.下面以一个例子来说明上面命令的用法,例如有一个文件,我们可以用tac命令反序打印出文件的内容,其实用sed的话也可以实现,这里先将结果列出,再详细讲解: 下面通过画图的形式来说明一下"sed"命令反序打印的处理机制及处理过程: 说明:
第一行左边为文件内容,箭头所指为sed当前处理的行,右侧为sed命令;后面三行左侧绿色为模式空间内容,右侧蓝色为保持空间内容。每次sed只读取文件中一行到模式空间,即每次执行sed命令前,模式空间中只有文件中当前处理行内容,这一点没有在图中表现。每一行表示一个命令处理完后两个空间中的内容 第一步:读取文件的第一行"First"进行处理,先经过"1!G"指令处理、再经过"h"指令处理、最后一个指令"$!d"将模式空间内容删除,所以不会在屏幕上打印内容 第二步:读取第二行“Sencond”进行处理,最后一个指令将模式空间内容删除,所以不会在屏幕上打印内容 第三步:读取第三行“three”进行处理,注意sed处理完之后会把,会把模式空间中内容打印到屏幕并自动清空模式空间(这个没在图中表现)awk:
awk作用特点:
排除信息查询信息统计信息替换信息语法格式:
awk [参数] ‘模式–动作’ 文件awk的工作原理:
按照行号查询
按内容查询
指定分隔符
精确查找
内容替换
特殊模式:BEGIN{}
特殊模式:END{} 对指定的一列所对应的字符进行统计:
sed命令修改替换文件的内容:真正修改文件的内容 (tr命令是假装修改文件的内容) tr 命令修改文件: 使用tr命令替换文件内容后,再用cat命令查看文件,发现文件内容并没有真正修改。细心的朋友可能发现了问题。为什么tr命令替换文件内容时有时会出错(如第一张图里红框标出来的),下面和大家分享一下tr命令替换的原理