`
itxdl
  • 浏览: 26816 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多
Linux基础教程 linux awk内置变量使用介绍
  awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是兄弟连Linux培训给大家介绍的awk内置变量。
  一、内置变量表
  属性 说明
  $0 当前记录(作为单个变量)
  $1~$n 当前记录的第n个字段,字段间由FS分隔
  FS 输入字段分隔符 默认是空格
  NF 当前记录中的字段个数,就是有多少列
  NR 已经读出的记录数,就是行号,从1开始
  RS 输入的记录他隔符默 认为换行符
  OFS 输出字段分隔符 默认也是空格
  ORS 输出的记录分隔符,默认为换行符
  ARGC 命令行参数个数
  ARGV 命令行参数数组
  FILENAME 当前输入文件的名字
  IGNORECASE 如果为真,则进行忽略大小写的匹配
  ARGIND 当前被处理文件的ARGV标志符
  CONVFMT 数字转换格式 %.6g
  ENVIRON UNIX环境变量
  ERRNO UNIX系统错误消息
  FIELDWIDTHS 输入字段宽度的空白分隔字符串
  FNR 当前记录数
  OFMT 数字的输出格式 %.6g
  RSTART 被匹配函数匹配的字符串首
  RLENGTH 被匹配函数匹配的字符串长度
  SUBSEP \034
  2、实例
  1、常用操作
  [chengmo@localhost ~]$ awk '/^root/{print $0}' /etc/passwd
  root:x:0:0:root:/root:/bin/bash
  /^root/ 为选择表达式,$0代表是逐行
  2、设置字段分隔符号(FS使用方法)
  [chengmo@localhost ~]$ awk 'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd
  root /bin/bash
  FS为字段分隔符,可以自己设置,默认是空格,因为passwd里面是”:”分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。
  3、记录条数(NR,FNR使用方法)
  [chengmo@localhost ~]$ awk 'BEGIN{FS=":"}{print NR,$1,$NF}' /etc/passwd
  1 root /bin/bash
  2 bin /sbin/nologin
  3 daemon /sbin/nologin
  4 adm /sbin/nologin
  5 lp /sbin/nologin
  6 sync /bin/sync
  7 shutdown /sbin/shutdown
  ……
  NR得到当前记录所在行
  4、设置输出字段分隔符(OFS使用方法)
  [chengmo@localhost ~]$ awk 'BEGIN{FS=":";OFS="^^"}/^root/{print FNR,$1,$NF}' /etc/passwd
  1^^root^^/bin/bash
  OFS设置默认字段分隔符
  5、设置输出行记录分隔符(ORS使用方法)
  [chengmo@localhost ~]$ awk 'BEGIN{FS=":";ORS="^^"}{print FNR,$1,$NF}' /etc/passwd
  1 root /bin/bash^^2 bin /sbin/nologin^^3 daemon /sbin/nologin^^4 adm /sbin/nologin^^5 lp /sbin/nologin
  从上面看,ORS默认是换行符,这里修改为:”^^”,所有行之间用”^^”分隔了。
  6、输入参数获取(ARGC ,ARGV使用)
  [chengmo@localhost ~]$ awk 'BEGIN{FS=":";print "ARGC="ARGC;for(k in ARGV) {print k"="ARGV[k]; }}' /etc/passwd
  ARGC=2
  0=awk
  1=/etc/passwd
  ARGC得到所有输入参数个数,ARGV获得输入参数内容,是一个数组。
  7、获得传入的文件名(FILENAME使用)
  [chengmo@localhost ~]$ awk 'BEGIN{FS=":";print FILENAME}{print FILENAME}' /etc/passwd
  /etc/passwd
  FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。
  8、获得linux环境变量(ENVIRON使用)
  [chengmo@localhost ~]$ awk 'BEGIN{print ENVIRON["PATH"];}' /etc/passwd
  /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/java/jdk1.5.0_17/bin:/usr/java/jdk1.5.0_17/jre/bin:/usr/local/mysql/bin:/home/web97/bin
  ENVIRON是子典型数组,可以通过对应键值获得它的值。
  9、输出数据格式设置:(OFMT使用)
  [chengmo@localhost ~]$ awk 'BEGIN{OFMT="%.3f";print 2/3,123.11111111;}' /etc/passwd
  0.667 123.111
  OFMT默认输出格式是:%.6g 保留六位小数,这里修改OFMT会修改默认数据输出格式。
  10、按宽度指定分隔符(FIELDWIDTHS使用)
  [chengmo@localhost ~]$ echo 20100117054932 | awk 'BEGIN{FIELDWIDTHS="4 2 2 2 2 3"}{print $1"-"$2"-"$3,$4":"$5":"$6}'
  FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS="4 2 2 2 2 2"就表示$1宽度是4,$2是2,$3是2 .... 。这个时候会忽略:FS分隔符。
  11、RSTART RLENGTH使用
  [chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/[a-z]+$/); print start, RSTART, RLENGTH }'
  11 11 4
  [chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/^[a-z]+$/); print start, RSTART, RLENGTH }'
  0 0 –1
  RSTART 被匹配正则表达式首位置,RLENGTH 匹配字符长度,没有找到为-1.

分享到:
评论

相关推荐

    Linux实战awk详解

    awk还提供了内置变量,如NR(已读取的行数)、NF(当前行的字段数)和FS(字段分隔符)。通过巧妙运用这些变量,你可以编写出灵活且高效的脚本。 在描述中提到的“文本流问题”,可能涵盖各种情况,如过滤特定行、...

    awk教程-awk教程.rar

    - **内置变量**:如NR(已读取的行数)、NF(当前行的字段数)、FS(字段分隔符)等。 - **函数**:awk提供了内置的数学和字符串处理函数,如length()、split()、substr()等。 - **自定义函数**:可以创建用户...

    linuxsed与awk第三版

    5. Awk基础:介绍awk的语法结构,如模式和动作,以及内置变量和函数。 6. Awk模式匹配:理解awk中的模式匹配机制,包括字段分割和模式匹配规则。 7. 控制结构:学习如何在awk中使用条件语句(if-else)和循环(for,...

    AWK 教程 - v1.0.pdf

    在开始学习AWK之前,你需要具备一定的GNU/Linux基础,包括熟悉命令行操作和基本的shell脚本编程。了解正则表达式也会对学习AWK有所帮助,因为AWK中的模式匹配很大程度上依赖于正则表达式。 **第一章:概述** 本章将...

    Linux下BASH、AWK编程视频教程.zip

    "04.BASH内置变量的使用"涵盖了BASH中许多预定义的环境变量和特殊变量,比如$0(脚本名)、$#(参数数量)、$$(当前进程ID)等。熟练掌握这些变量,能让你在编写脚本时更加灵活高效。 最后,"05.awk编程与应用"是...

    非常经典的awk教程

    4. **awk内置变量**: - `$0`表示整个输入行,`$1`、`$2`等表示字段。 - `NF`是字段数量,`NR`是已读行数。 - `OFS`是输出字段分隔符,`ORS`是输出记录分隔符。 5. **条件表达式和函数**: - Awk支持逻辑与`&&`...

    awk入门到精通.pdf

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

    AWK 使用教程

    【AWK 使用教程】 在Linux环境中,AWK是一种强大的文本分析工具,被广泛用于处理结构化数据。AWK的工作原理是基于行(记录)和字段(记录中的元素)的概念,它能够方便地处理和解析文件中的特定模式。本文档旨在为...

    awk tutorial and introduction 英文版

    awk默认使用空格或制表符作为字段分隔符,但可以通过`FS`内置变量自定义分隔符。例如,以逗号分隔: ```bash awk -F ',' '{ ... }' ``` **3. 访问字段** 在awk中,使用$符号后跟字段编号来访问字段。例如,第一字段...

    emacs和Awk入门教程

    2. **内置变量**:预定义的变量如$0表示整行,$1至$NF表示字段值,NF表示字段数量,这些变量简化了数据提取。 3. **内置函数**:Awk提供了许多内置函数,如print、printf用于输出,length计算字符串长度,split分割...

    AWK学习手册18年排版

    书中详细介绍了AWK的基本语法、规则、模式匹配机制、内置变量和函数,以及如何利用AWK进行实际的编程任务。 通过学习这份手册,你可以掌握以下AWK的知识点: 1. **AWK语法基础**:包括BEGIN和END规则,动作和模式...

    Linux-shell脚本全面学习.pdf

    Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...

    awk入门最好的资料

    awk内置了多个函数,如`length()`(返回字符串长度)和`substr()`(提取子字符串)。此外,还可以自定义函数来增强awk脚本的功能。 ```awk function square(x) {return x * x} awk '{print square($1)}' ``` ### 7...

    AWK Tutorial Guide

    1. 内置变量:AWK提供了许多内置变量,如NF(当前记录的字段数量)、NR(已读取的记录数)和FNR(在当前文件中已读取的记录数)等,这些变量极大地简化了编程过程。 2. 字段分隔符:默认情况下,AWK将空格或制表符...

    awk and sed 3

    2. **字段处理**:介绍如何使用`awk`的内置变量如`$0`(完整行)、`$1`到`$NF`(字段)来操作文本数据。 3. **正则表达式**:详细讲解如何在`awk`和`sed`中使用正则表达式进行模式匹配。 4. **脚本实例**:提供...

    AWK教程文档

    在awk中,有一些内置的环境变量,如`NR`表示已经处理的记录数,`NF`表示当前记录的域数量,`FS`是字段分隔符等。 ### 5. awk运算符 awk支持多种运算符,包括比较运算符、逻辑运算符、赋值运算符以及算术运算符。...

    AWK命令资源收集.rar

    本资源包包含了关于AWK的实用资料,包括一个PDF实例教程和一个简明使用指南。 1. **AWK基础** - **变量**:AWK中的变量是自动声明的,无需预定义类型,可以是数字或字符串。 - **模式和动作**:AWK程序由模式和...

    AWK编程实例指南.rar_AWK ns2_awk_awk unix.shell_awk编程实例

    这可能包括如何定义模式、动作、字段分隔符,以及如何使用内置变量和函数。通过这个指南,学习者可以了解如何使用AWK进行数据过滤、统计计算、格式化输出等任务。 "www.pudn.com.txt"可能是一个实际的AWK脚本或者...

    linux shell 编程教程

    9.2.6 awk内置变量 73 9.2.7 NF、NR和FILENAME 74 9.2.8 awk操作符 75 9.2.9 内置的字符串函数 78 9.2.10 字符串屏蔽序列 80 9.2.11 awk输出函数printf 81 9.2.12 printf修饰符 81 9.2.13 awk数组 86 9.3 小结 88 第...

Global site tag (gtag.js) - Google Analytics