四剑客解析

编程入门 行业动态 更新时间:2024-10-06 04:02:15

四<a href=https://www.elefans.com/category/jswz/34/1763412.html style=剑客解析"/>

四剑客解析

“四剑客”是运维工作经常要用到的四个命令: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)文件中查询信息的能力(查)

  1. 文件中如何添加信息


  2. 文件中如何删除信息

  3. 文件中如何修改信息



    注意:若自己要修改文件内容时,并决定写入到磁盘中,一定不能让参数“n”和“i”同时出现
    因为使用-n参数输出的内容,会被-i参数写入到文件对应的磁盘位置,这样源文件就会别新的内容真实的覆盖掉

  4. 文件中如何查询信息



总结

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作用特点

  1. 排除信息
  2. 查询信息
  3. 统计信息
  4. 替换信息

语法格式

  • awk [参数] ‘模式–动作’ 文件

awk的工作原理:

  1. 按照行号查询

  2. 按内容查询

  3. 指定分隔符

  4. 精确查找

  5. 内容替换

  6. 特殊模式:BEGIN{}

  7. 特殊模式:END{}

    对指定的一列所对应的字符进行统计:

sed命令修改替换文件的内容:真正修改文件的内容 (tr命令是假装修改文件的内容)
tr 命令修改文件


使用tr命令替换文件内容后,再用cat命令查看文件,发现文件内容并没有真正修改。细心的朋友可能发现了问题。为什么tr命令替换文件内容时有时会出错(如第一张图里红框标出来的),下面和大家分享一下tr命令替换的原理



更多推荐

四剑客解析

本文发布于:2024-02-14 11:44:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763036.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:剑客

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!