linux awk文本

目录

一、awk概念

二、awk的工作过程

三、awk字符

四、内置变量

五、getline 

六、awk的精准筛选

七、例子演示

八、实验演示

 

 

 

 

 

 

 

 

 

 

 

 

 

一、awk概念

  1.概念:awk 是一个功能强大的编辑工具,逐行读取输入文本,主要作用于文件内容,AWK信息的读入也是逐行指定的匹配模式进行查找,

      对符合条件的内容进行格式化输出或者过滤处理。

  2.分隔符:默认是空格,多个空格会压缩一个,可用-F指定分割符

  3.awk执行过程:1、按照命令找指定的行  2、找到的行 打印,操作 awk默认的操作就是打印

  4.awk优点:可以在无交互的情况下自动化完成文本操作

 

二、awk的工作过程

   1.有BEGIN{action;..}优先执行  

   2.从(stdin)中读取内容,执行pattern{action;..}读取文件内容(没有pattern执行print内容)

   3.执行END{action;..}内容

 

三、awk字符

  1.-F “分隔符” 指明输入时用到的字段分隔符,默认的分隔符是若干个连续空白符

  2.-v变量赋值

  3.{ }外指定条件,{ }内指定操作。

     4.用逗号指定连续的行,用 || 指定不连续的行。&&表示”且“。

  5.默认为空格或制表位。与"-F"作用相同 用-F可以不加单引号 -F:,用FS必须用=""

  例子演示:

  1.-F指定分隔符

   2.-v赋值为:,每次出现:就空格

   3.{}外条件是数量为0打印,{}里操作是打印

   4.,为间隔符||为且&&为或

   5.FS定义分割符

 

四、内置变量

  内置变量,不能用双引号括起来,不然系统会把它当成字符串。

   NR: 当前处理的行的行号(序数)

   NF: 当前处理的行的字段个数。$NF代表最后一个字段
   FS: 列分割符。指定每行文本的字段分隔符,输入内容的分隔符
      默认为空格或制表位。与"-F"作用相同 用-F可以不加单引号 -F:,用FS必须用=""
      $0: 当前处理的行的整行内容 打印所有
   $n: 当前处理行的第n个字段(第n列)
   OFS:输出内容的列分隔符
   FILENAME:被处理的文件名
   RS: 行分隔符。awk从文件中读取资料时,
   将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是"\n"

   1.$0$1(在里面是$0打印所有$1打印一列),在外面0不打印,1打印

   2.NR输出统计行号

   3.展示行号以及内容

   4.打印指定行号内容

   5.范围打印

   6.打印不相连的行

   7.正则表达式的范围打印

   8.偶数打印

   9.奇数打印

   10.BEGIN计算

   11.幂运算

 

五、getline

  1.当getline左右无重定向符号(“<”,">")或者管道符号(“|”)时,awk首先读取的是第一行,而getline获取的是光标跳转至下一行的内容(也就是第二行)。

  2.当getline左右有管道符号或重定向符时,getline则作用定向输入文件,由于文件是刚打开,并没有被awk读入一行,而只是getline读入,所以getline返回的是文件的第一行,而不是跳转至一行输入

  使用getline偶数打印

   使用getline奇数打印

   使用getline将1.txt传给2.txt

   将1.txt内容传给2.txt展示出来

 

六、awk的精准筛选

  $n(> < ==): 用于对比数值
  $n~"字符串": 代表第n个字段包含某个字符串
  $n!~"字符串": 代表第n个字段不包含某个字符串
  $n=="字符串": 代表第n个字段为某个字符串
  $n!="字符串": 代表第n个字段不为某个字符串
  $NF: 代表最后一个字段

  1.输出有bash,并且输出第一列和第7列

   2.输出第七个字段不包含“nologin”所在行的第一个字段和最后一个字段

 

七、例子演示

  1.过滤打印

 

   2.行号加1递归

   3.过滤passwd展示前4行的第一列

   4.替换:换为+

   5.以:为分隔符换行输出

   6.打印uid大于1000的用户信息

   7.使用if判断用户信息

   8.三元表达式,?相当于then,:相当于else

   9.awk中的数组形成遍历

 

八、实验演示

  1.简单的日志分割

   2.提取host.txt主机名后再放回host.txt文件

   3.统计磁盘可用容量

   4.统计/etc下文件总大小

   5.CPU使用率

   6.统计内存

 

posted @ 2023-06-09 18:19  纸签  阅读(211)  评论(0编辑  收藏  举报