首页 > 系统相关 >linux awk文本

linux awk文本

时间:2023-06-09 18:22:04浏览次数:53  
标签:linux txt 打印 awk 分隔符 字符串 文本 getline

目录

一、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.统计内存

 

标签:linux,txt,打印,awk,分隔符,字符串,文本,getline
From: https://www.cnblogs.com/zhende/p/17469059.html

相关文章

  • Linux搭建elasticsearch 7.x 版本
     安装方式传统方式根据平台系统Windows、linux、mac下载安装包以linux为例,进入到想安装的目录位置,下载安装包并解压#进入安装目录cd/home#下载安装包wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-linux-x86_64.tar.gz#解压tar-z......
  • 关于linux删除Tomcat中日志文件磁盘空间未释放解决方法
    linux内存不够我删了几个g的catalina.out用的是rm,结果发现磁盘空间未释放后来百度一下,原来要用清空命令才行echo"">catalina.out但是已经删掉了怎么办呢可以用lsof|grepdeleted命令查看没有正常删除的(如果没有这个命令可能没有安装这个工具,百度一下安装一下就好)再用......
  • Linux 命令总结
    实用Linux命令总结Linux关机,重启# 关机shutdown -h now# 重启shutdown -r now查看系统,CPU信息# 查看系统内核信息uname -a# 查看系统内核版本cat /proc/version# 查看当前用户环境变量envcat /proc/cpuinfo# 查看有几个逻辑cpu, 包括cpu型号cat /proc/cpu......
  • linux常用命令2
    pwd命令 Linuxpwd(英文全拼:printworkdirectory)命令用于显示工作目录。 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称。 语法pwd[--help][--version]参数说明:--help在线帮助。--version显示版本信息。mkdir命令Linuxmkdir(英文全拼:makedi......
  • Linux环境下配置.Net自动部署
    使用VMWorkStation安装虚拟机下载VMWorkStation安装包安装包是通过关注“柠檬工会”公众号下载的,里面资源很多。参考教程安装虚拟机安装教程地址:https://blog.csdn.net/Liqi23/article/details/126622330我忘记了root密码,所以又去找教程重置密码教程地址:https://www.jb5......
  • Linux系统之Nginx的编译安装
    (Linux系统之Nginx的编译安装)一、检查系统版本[root@server001~]#cat/etc/os-releaseNAME="CentOSLinux"VERSION="7(Core)"ID="centos"ID_LIKE="rhelfedora"VERSION_ID="7"PRETTY_NAME="CentOSLinux7(Core)"......
  • Linux中cp命令如何使用?其参数有哪些?
    cp是Linux中常用命令之一,该命令主要用于复制文件或目录,那么Linux命令cp如何使用?本文为大家详细介绍一下cp命令,附带使用案例,希望对你有用哦!Linuxcp命令主要用于复制文件或目录。语法:cp[options]sourcedest或cp[options]source...directory参数说明:-a......
  • Linux (CentOS) 安装Apache图文详解
    目录查看是否已安装apache,以及版本号如何卸载旧版本apache安装Apache(yum安装)查看Apache工作状态以及如何启动它Apache各文件目录的作用https://blog.csdn.net/qq_20388417/article/details/105176612......
  • Linux服务器上替换jar包文件内容
    一、替换依赖rocketmq-namesrv-5.1.1.jar包1.查看jar包的目录结构与文件jartfrocketmq-dashboard.jar|greprocketmq-namesrv-4.9.3.jar2.解压jar包jar-xvfrocketmq-dashboard.jar3.替换依赖的jar包下载依赖包:wgethttps://repo1.maven.org/maven2/org/apache/rocketmq/rocket......
  • yum源使用报错-RockyLInux8.7-Modular dependency problem:
    报错信息如下:Kubernetes11kB/s|173kB00:15Modulardependencyproblem:Problem:conflic......