剑客解析"/>
四剑客解析
“四剑客”是运维工作经常要用到的四个命令:find、grep 、sed、awk。
老四:find ---- 用于查找文件所在路径
老三:grep — 用于过滤筛选信息(其它二者也可用于过滤筛选,但是grep对于过滤筛选信息用起来更简单方便)
老二:sed — 用于修改替换文件内容 擅长对文件中的“行”进行操作 (多配合单引号进行使用)
老大:awk — 擅长统计分析文件内容 擅长对文件中“列”进行操作 (多配合单引号进行使用)
find:基础应用
还可以使用 -size 参数 --->按照文件的大小来查找,-atime 按照读取的文件的时间来查找-ctime 按照修改文件内容的时间来查找
grep:基础应用
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:基础应用
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命令多个操作指令
**
sed高级用法:模式空间(pattern space)和保持空间(hold space)
**
前面的基本用法已经可以满足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命令替换的原理
更多推荐
四剑客解析
发布评论