语法形式:

awk [options] ‘script’ var=value file(s)

awk [options] -f scriptfile var=value file(s)

常用选项:

-F :fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

-v :var=value 赋值一个用户定义变量,将外部变量传递给awk

-f :scripfile 从脚本文件中读取awk命令

-m :[fr] val 对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。

awk模式和操作

awk脚本是由模式和操作组成的。

模式:

模式可以是以下任意一个:

/正则表达式/:使用通配符的扩展集。

关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试。

模式匹配表达式:用运算符~(匹配)和~!(不匹配)。

BEGIN语句块、pattern语句块、END语句块:参见awk的工作原理

操作:

操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大括号内,主要部分是:

变量或数组赋值

输出命令

内置函数

控制流语句

awk脚本基本结构

awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file

一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被单引号或双引号中,例如:

awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename

awk "BEGIN{ i=0 } { i++ } END{ print i }" filename

awk的工作原理

awk 'BEGIN{ commands } pattern{ commands } END{ commands }'

第一步:执行BEGIN{ commands }语句块中的语句;

第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。

第三步:当读至输入流末尾时,执行END{ commands }语句块。

BEGIN语句块在awk开始从输入流中读取行之前被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。

END语句块在awk从输入流中读取完所有的行之后即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。

pattern语句块中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到的行,awk读取的每一行都会执行该语句块。

linux分配端口未抢占端口,Linux命令之awk:基础知识(一)相关推荐

  1. Redis命令总结及其基础知识讲述

    Redis命令总结及其基础知识讲述 1.redis的不同之处 Redis拥有其他数据库不具备的数据结构,又拥有内存存储(这使得redis的速度非常快),远程操作(使得redis可以与多个客户端和服务器 ...

  2. linux挂载fc存储有超级坏块_Nand Flash基础知识与坏块管理机制的研究

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多 ...

  3. Linux(centos7.9)常用命令大全及基础知识

    linux中数组的索引从0开始,其他默认从1开始,例如没有第0列,从第1列开始 在Unix中一切(包括网络套接口)都是文件 在命令行中,无论几个空格,都当成一个空格看待 在linux中,在命令行中通过 ...

  4. linux执行lsof命令_Linux服务器基础知识之lsof命令

    只有root用户才能正确执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示"permission denied" Linux下查看80端口运 ...

  5. linux显卡驱动未加载,Linux下无显卡驱动的解决办法

    2011-11-28 13:03 朋友你好! 我刚开始搞linux,碰到了很多问题,想问你下,希望能帮我解答下. 下面是我的一段shell 程序 #!/bin/sh while [ 0 ] do re ...

  6. linux配置过程未选gnome,Linux技巧:GNOME英文界面下安装配置SCIM输入法

    本文以SCIM输入法为例,具体介绍了在SCIM输入法在Linux下GNOME英文界面下安装与使用的配置过程. 安装中文字体 运行 emerge arphicfonts wqy-bitmapfont c ...

  7. linux shell 变量 管道,linux下shell,变量,管道,重定向等基础知识及技巧

    知识点如下: 1,关于shell编程中的变量,shell编程中的变量分为4种 本地变量:只对本系统本用户自己的shell有用 环境变量:对本系统的所有shell都有用  用export来声明变量  例 ...

  8. 简述linux内核中,Linux内核中的文件描述符(一)——基础知识简介

    2.文件描述符 下面进一步介绍进程对自己所访问的file对象的管理方法.linux中使用一个数组来管理进程打开的文件的file对象,数组中的每个元素都存放一个纸箱进程所打开的文件的file对象.既然用 ...

  9. 从零开始之驱动发开、linux驱动(六十四、内核调试篇--基础知识2[console的建立])

    上一节我们分析的earlay的printk知识,本节主要分析一下在内核启动后的printk的知识. 主要是通过下面函数实现的 after_dashes = parse_args("Booti ...

最新文章

  1. 应用内设置语言不重启方法
  2. 毕业就拿阿里offer,你和他比差在哪?
  3. linux命令: tree的c实现
  4. boost::geometry:::detail::overlay::get_clusters用法的测试程序
  5. boost::geometry::model::multi_linestring用法的测试程序
  6. DataSet.Relations 属性
  7. 模拟电路概念知识体系梳理(基础部分)
  8. str和unicode类
  9. Java7并发编程指南——第五章:Fork Join框架
  10. lucene 增量 全量 更新索引_10年+,阿里沉淀出怎样的搜索引擎?
  11. 多模块Struts应用程序的几个问题(及部分解决方法)
  12. webstorm界面主题
  13. concat函数_《MySQL 入门教程》第15篇MySQL常用函数之字符函数
  14. 《吐血整理》一篇文章教你学废Git版本管理
  15. css3八卦,CSS3 阴阳八卦(太极)图动画
  16. 细读《深入理解 Android 内核设计思想》(三)Binder 机制 [上]
  17. 网络舆情风险点排查工作实施方案
  18. og标签对SEO的作用及用法
  19. 通过淘宝商品ID和sku ID 获取到淘宝商品SKU信息接口,可获取sku价格,sku销量,sku图片及sku库存,SKU尺寸体积接口等参数
  20. (详细)安装nvidia专有驱动并且正确配置,arch linux + lightdm + deepin desktop

热门文章

  1. 亚马逊分类目录_新版亚马逊分类目录v2.4程序源码官方分享下载
  2. linux服务器调优列表,2018-10-24(linux服务器常见的各种参数调优)
  3. mysql5.6.22编译安装教程_Linux CentOS6.0下编译安装MySQL 5.6.22
  4. 运维:使用awk命令获取文本的某一行,某一列
  5. linux怎么让cat运行,使用lolcat让你的Linux命令行出现七彩虹
  6. android fragment 优势,Android Fragment详解
  7. org.mariadb.jdbc.internal.com.send.authentication.SendGssApiAuthPacket could not be instantiated
  8. 目标赋予生命的意义和目的
  9. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的微信小程序便利店购物系统
  10. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线点餐系统