`
nigelzeng
  • 浏览: 606779 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

awk的内置系统变量

阅读更多

awk中有许多系统变量或内置变量。

这里分两种:
  --可以改变的系统变量(比如默认的字段和记录分隔符)
  --不可以改变的,由awk系统自己更新的变量(当前记录的编号和输入文件名)

FS:字段分隔符,默认值是一个空格
NF:当前输入记录的字段个数
RS:定义为一个换行符
NR:定义为输入的行数

ORS:与RS等效的输出,默认也是一个换行符

OFS:与FS等效的输出,默认值也是一个空格


·现在举例说明:
--定义一个marks.txt文件,内容如下:
john 85 92 78 94 88
andrea 89 90 75 90 86
jasper 84 88 80 92 84

--使用awk命令:
[root@CentOS awk_test]# awk '{ total=$2+$3+$4+$5+$6; avg=total/5; print NF,"\t" NR ".",$1,total/5 RS }' marks.txt
 

计算平均值并且打印,结果如下:
6       1. john 87.4

6       2. andrea 86

6       3. jasper 85.6


两个重点数字解析:
6 ==》 即为 NF的值,上面已说过NF表示当前输入记录的字段个数,拿第一行来说:
       john 85 92 78 94 88,以空格为分隔符,这里一共有6个字段,所以NF值为6.

1 ==》 即为NR的值,NR表示输入的行数,相当于一个变量,处理一行时增加1,所以等到awk命令处理完,可以        用 END{print NR} 来显示一共有多少行输出。

如果我把命令改一下,使用下面的命令:
[root@CentOS awk_test]# awk 'BEGIN { OFS="****" } { total=$2+$3+$4+$5+$6; avg=total/5; print NF,"\t" NR ".",$1,total/5 RS }' marks.txt
 

即把OFS=“****”,则会发生如下情况:
6****    1.****john****87.4

6****    2.****andrea****86

6****    3.****jasper****85.6

之前的 , 符号本来是一个空格(OFS的默认值),这里已经变成了 **** 。
同理,ORS也一样可以改变。


========================== 全文完 =====================

 

分享到:
评论

相关推荐

    Linux AWK内置函数

    ### Linux AWK内置函数详解 #### 一、算术函数 AWK 提供了一系列内置的数学函数,可以方便地处理各种数学运算。 1. **`atan2(y, x)`** - **功能**:计算 y 和 x 的商的反正切值。 - **示例**:`awk 'BEGIN { ...

    linux awk 内置变量使用介绍.docx

    awk的内置变量是其灵活性的关键组成部分,这些变量提供了对输入和输出的控制,以及对处理过程的元信息的访问。以下是对标题和描述中提到的`awk`内置变量的详细解释: 1. **$0**:这个变量代表当前记录,即每一行的...

    LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS

    它拥有丰富的内置变量和函数,使得用户能够方便地处理各种复杂的文本数据。本文将详细介绍AWK中的几个常用内建变量:FS、NF、NR、RT、RS、ORS、OFS,并通过实例展示它们的使用方法。 #### 二、变量介绍 1. **FS ...

    linux shell awk获得外部变量(变量传值)简介

    `awk`有一个内置变量`ENVIRON`,它是一个关联数组,存储着当前环境的所有变量。可以通过遍历`ENVIRON`来访问环境变量: ```bash awk 'BEGIN{for (i in ENVIRON) {print i"="ENVIRON[i];}}' ``` 总结来说,要在`awk`...

    Shell脚本之awk篇

    awk内置了多种函数,例如字符串处理、数学计算等,这些函数可以与awk的模式匹配和动作指令结合使用,以实现复杂的文本处理逻辑。 通过这篇文档,读者可以掌握awk的基本概念、工作原理、语法格式和程序结构,进一步...

    awk知识文档学习

    - **字段分隔符**: Awk使用内置变量FS(Field Separator)来确定字段的分隔符,默认为空格和制表符。 - **记录分隔符**: RS(Record Separator)用来指定记录的分隔符,默认为换行符。 ### 5. 格式化输出 Awk提供...

    awk教程入门到精通

    awk 有两种变量:内置变量和用户定义变量。内置变量包括 NR、NF、FS、RS 等,它们分别表示记录号、字段数、字段分隔符和记录分隔符。用户定义变量可以使用赋值语句来定义。 awk 的函数 awk 有多种函数,包括数学...

    awk内置变量

    在实际应用中,awk的内置变量极大地增强了其处理数据的能力。例如,`$1`到`$NF`代表输入记录的各个域,`NR`记录当前处理的记录数,`FNR`则是在当前文件中的记录数,`FS`是输入字段分隔符,默认为空格或制表符,可以...

    linux-shell脚本命令:awk命令简介

    awk内置变量包括: - ARGC:表示命令行参数的个数。 - ARGV:表示命令行参数数组。 - ARGIND:表示当前被处理文件的ARGV标志符。 - NR:表示已经读出的记录数。 - FNR:表示当前文件的记录数。 - FS:表示输入字段...

    awk学习手册--unix 系统学习

    同时,awk内置了管道功能,可以方便地与其他Unix命令(如grep、sort)结合使用,实现数据的高效处理。 awk擅长处理数据行(Record)和字段(Field)的数据。数据行通常对应于文件中的一行,而字段则是由分隔符...

    linux中shell脚本中awk的深入分析

    本文档将深入分析 awk 的使用和实现机制,探讨 awk 的内置变量、指令和函数,并通过实践示例加深理解。 awk 的内置变量 awk 提供了多种内置变量,用于存储和处理数据。这些变量包括: * ARGC:命令行参数个数 * ...

    linux ,awk ,awk详解

    3. **获取环境变量**:awk 内置变量 `ENVIRON` 是一个关联数组,可以直接访问所有的环境变量。例如,`awk 'BEGIN{for (i in ENVIRON) {print i"="ENVIRON[i];}}'` 将打印出所有环境变量及其值。 在 awk 中,记录...

    awk命令详解大全

    - **awk内置变量**:如`FS`(字段分隔符)、`OFS`(输出字段分隔符)等。 - **awk的内置函数**:如`tolower()`(转换为小写)、`toupper()`(转换为大写)等。 通过以上介绍,我们可以看出awk不仅仅是一个简单的...

    awk详细用法小结awk awk

    #### 四、awk内置变量 awk提供了一系列内置变量,用于简化数据处理任务: - `$n`:当前行的第n个字段,其中字段由FS变量指定的分隔符分割。 - `$0`:当前行的完整内容。 - `ARGC`:命令行参数的个数。 - `ARGIND`...

    awk入门到精通.pdf

    在UNIX环境下,awk作为一种强大的文本处理工具,其优势在于它是一种解释型语言,无需预先编译,变量无类型限制,支持关联数组,以及内置的数据行(Record)和字段(Field)处理能力。awk还具备管道功能,能够与其他...

    linux bash之 awk用法

    1. **内置变量**:Awk提供了一系列内置变量,如`NF`(当前行的字段数量)、`NR`(记录编号)、`FS`(字段分隔符)等,这些变量可以简化数据处理逻辑。 2. **流程控制**:Awk支持条件语句(如`if`)、循环语句(如`...

Global site tag (gtag.js) - Google Analytics