对任意一门语言都会有变量,在awk中变量分为内置变量自定义变量

内置变量:就是预先在awk中定义好的,用户可以直接使用

自定义变量:这种变量为用户自己定义的变量,需要先定义后再使用。

内置变量

awk主要的内置变量如下所示:

变量 解释 默认值
\$0 代表当前整行记录
$\(1-\$\)n 代表当前一行的第n列,由输入分隔符决定 默认由空格进行分隔
FS 输入列分隔符 默认为空格
RS 输入行分隔符 默认为换行符
ORS 输出行分隔符 默认为换行符
OFS 输出列分隔符 默认为空格
NF 当前行总列数
NR 当前处理的文本行号
FNR 各文件自己的行号
FILENAME 当前文件名
ARGC 命令行的参数个数
ARGV 命令行中数组的参数
CONVFMT 设置数字的格式 默认%.6g
OFMT 输出数字的格式 默认%.6g

用法示例

1、打印行号

2、awk默认以换行符做为新的一行的开始,如果不想采用默认的换行符,则可以自己指定行分隔符

在该示例中,使用 : 作为换行符,则每次遇到:则新起一行

3、awk在输出显示时也是默认以换行符作为新的一行,如果在输出不采用默认的换行符,则也可指定输出行分隔符

在该示例中,采用默认的换行符,与我们的预期是一致的,但如果指定输出行换行符,则以指定的换行符做为换行的标志,这个仅仅是awk能够识别,因此我们看到的输出在一行上面,而在awk里面却是两行。

4、打印总列数和行号

5、如果一次输入有多个文件,想打印各个文件自己的信息,如何处理?来看示例:

自定义变量

    内置变量个数是有限的,不能满足现实中不同的使用场景,因此在实际应用时,还需要定义自己的变量,俗称自定义变量。在awk中自定义变量的方法主要有两种方式:

  • 方式一:通过选项-v
awk -v variableName=value
  • 方式二:在模式中定义
awk 'BEGIN {variableName=value}'

用法示例

分隔符

  • 问题一:awk默认是逐行处理文本,在将文本读入后,只想输出某些用户想要的信息,怎么处理?
  • 问题二:在匹配到相应的数据后,要对输出进行格式化处理,如两个字段问采用%%连接,怎么处理?

    针对以下两个问题,我们引入分隔符概念。在awk中,分隔符分为两种:输入分隔符输出分隔符

输入分隔符

    输入分隔符,全称field separator,简写FS。针对即将读入到awk中所采用的分隔符,默认为空格;当awk逐行处理文本文件的时候,以输入分隔符为参考对每行进行切割并分隔为多列。如果文本文件中没有空格,则可以自行指定分隔符。

  • 通过选项 -F 指定输入分隔符

  • 通过 -v 设置内部变量 FS,指定输入分隔符

输出分隔符

    输出分隔符,全称output field separator,简写OFS。针对经过awk处理后,在输出的时候采用的分隔符加以格式化,默认为空格。如果在输出的结果不采用默认的分隔符,则需要指定分隔符。

  • 通过 -v 设置内部变量 OFS,指定输入分隔符

  • 使用print输出

数组

    如果你了解过任何一门编程语言,则很容易明白什么是数组。通过情况下,数组是代表同一种类型数据的集合,常用的有一维、二维和多维数组等等。在使用的时候通过数组下标去访问。大部分的编程语言中下标是从0开始,而awk中数组下标是从1开始。在使用数组时需要注意的事项如下所示:

  • 数组的允许赋空值
  • 如果引用的数组值不存在,则系统默认会创建并赋为空值
  • awk中数组的下标可以是数字,也可以是任意字符
  • 判断元素是否属于数组需要使用(元素 in 数组)
  • 如果引用的元素不存在,进行数值运算时会默认当0进行处理

用法示例

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

awk基础02-变量-分隔符-数组的更多相关文章

  1. Python基础02 变量

    Python中的变量有两个特点: 1. 无需声明 a = 1 2. 不与类型绑定 a = 1 a = 'hello world' 变量名只是内存中具体对象的一个引用(reference). 对于 a ...

  2. Linux基础教程 linux awk内置变量使用介绍

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是兄弟连Linux培训 给大家介绍的awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个 ...

  3. 『忘了再学』Shell基础 — 29、AWK内置变量

    目录 1.AWK内置变量 2.练习说明 (1)$n变量练习 (2)FS变量练习 (3)NF变量和NR变量练习 3.总结: 1.AWK内置变量 AWK内置变量如下表: awk内置变量 作用 $0 代表目 ...

  4. 070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据

    070 01 Android 零基础入门 01 Java基础语法 09 综合案例-数组移位 02 综合案例-数组移位-从键盘接收数据 本文知识点:综合案例-数组移位-从键盘接收数据 说明:因为时间紧张 ...

  5. awk基础 [马哥视频]

    awk基础 1.1 print print的使用格式: print item1,item2, …. 要点: 各项目自己使用逗号隔开,而输出时则以空白字符分隔: 输出的item可以为字符串或者数值,当前 ...

  6. awk程序设计语言之-awk基础

    awk程序设计语言之-awk基础 http://man.linuxde.net/ 常用工具命令之awk命令 awk是一种编程语言,用于在Linux/Unix下对文本和数据处理.数据可以来自标准输入(s ...

  7. shell编程awk基础介绍

    awk介绍 报告生成器,格式化文本输出 处理机制类似sed命令,自带循环处理    读入一行处理一行然后自动读取下一行再进行处理 sed命令换行的标识是固定的,只能是回车换行.    awk里面的换行 ...

  8. awk 基础入门

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  9. centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课

    centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符  通配符 特殊符号. * + ? 总结  问加星 cat -n  nl  输出文件内容并加上行号 alias放~ ...

随机推荐

  1. 基于ffmpegSDK的开发

    #include <stdio.h> #include <libavutil/avutil.h> #include <libavcodec/avcodec.h> # ...

  2. load/domContentLoaded事件、异步/延迟Js 与DOM解析

    一.DOMContentLoaded 与 load事件 关于load和DOMContentLoaded事件,mdn对于它们是这样描述的: DOMContentLoaded mdn文档地址:https: ...

  3. Java的序列化算法--解释序列后字节含义

    Java的序列化算法 序列化算法一般会按步骤做如下事情: ◆将对象实例相关的类元数据输出. ◆递归地输出类的超类描述直到不再有超类. ◆类元数据完了以后,开始从最顶层的超类开始输出对象实例的实际数据值 ...

  4. Tomcat 7 的七大新特性(更容易将Tomcat内嵌到应用去中去 )

    Tomcat的7引入了许多新功能,并对现有功能进行了增强.很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们,或指出它们的不足,或提供代码示例.本文将明确描述TOMCAT 7中七个最显 ...

  5. FilenameFilter 文件名过滤

    public static final FilenameFilter JSON_CONFIG_FILE_FILTER = new FilenameFilter() {         @Overrid ...

  6. 利用spring的ApplicationListener监听某一类事件的发生

    1.ApplicationListener在使用过程中可以监听某一事件的发生,可以做出相应的处理,这个方式不常用,但是在特殊情况下面还是有用的. 2.导包pom.xml <project xml ...

  7. springBatch学习 batch的使用方式(5)

    首先讲一下batch框架提供的一组job执行的api 如下图 说明: 应用场景 包含三种 标准的web ,定时任务调度,命令行 1.命令行 通过命令行在单独的jvm中调用 进行批处理作业 spring ...

  8. 跟我学算法-PCA(降维)基本原理推导

    Pca首先 1.对数据进行去均值 2.构造一个基本的协方差矩阵1/m(X)*X^T 3对协方差矩阵进行变化,得到对角化矩阵,即对角化上有数值,其他位置上的数为0(协方差为0),即求特征值和特征向量的过 ...

  9. Running Bitvise SSH Client as a Windows Service

    It is possible to run a Windows program as a system service. The advantage of services is that they ...

  10. 容器网络之 veth设备

    创建命名空间 # ip netns add mhc # ip link show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue ...