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=":"}{printNR,$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) {printk"="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 ~]$ echo20100117054932 | 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、RSTARTRLENGTH使用

  [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基础教程 linux awk内置变量使用介绍的更多相关文章

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

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

  2. 【转】awk内置变量

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS 输入 ...

  3. awk 内置变量

    awk 内置变量 FS 设置输入域分隔符,等价于命令行 -F选项 OFS 输出域分隔符 NF 浏览记录的域的个数NR 已读的记录数RS 控制记录分隔符 ORS 输出记录分隔符 substr 截取指定的 ...

  4. Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量

    AWK中,变量分为两种:内置变量与自定义变量. 常见的内置变量有: FS:输入字段分隔符, 默认为空白字符 OFS:输出字段分隔符, 默认为空白字符 RS:输入记录分隔符(输入换行符), 指定输入时的 ...

  5. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  6. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  7. awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

    ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 ...

  8. Linux基础教程 linux下使用find命令根据系统时间查找文件用法

      LinuxFind 兄弟连Linux培训 总结这些时间戳包括 复制代码代码如下: mtime 文件内容上次修改时间 atime 文件被读取或访问的时间 ctime 文件状态变化时间 mtime 和 ...

  9. Linux基础教程 linux中使用find命令搜索文件常用方法记录

    find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间.兄弟连Linux培训 小编总结了下,整理出find常用的使用方 ...

随机推荐

  1. mysql中索引类型

    mysql索引类型normal,unique,full text的是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可 ...

  2. 第八周课程报告&&实验报告六

    Java实验报告 班级 计科一班 学号 20188390 姓名 宋志豪 实验四 类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 练习捕获异常.声明异常. ...

  3. [转帖]影驰首发PCIe 4.0 SSD:群联AMD合作主控飚出5GB/s

    影驰首发PCIe 4.0 SSD:群联AMD合作主控飚出5GB/s https://www.cnbeta.com/articles/tech/851275.htm 硬件发展的真快.. AMD刚刚发布的 ...

  4. POJ 2995 Brackets 区间DP

    POJ 2995 Brackets 区间DP 题意 大意:给你一个字符串,询问这个字符串满足要求的有多少,()和[]都是一个匹配.需要注意的是这里的匹配规则. 解题思路 区间DP,开始自己没想到是区间 ...

  5. AtCoder Beginner Contest 072

    这应该是我第二次打AtCoder, 题目其实并不难,就是自己经验不足想复杂了,再加上自己很笨,愣是做了97分钟才全做出来(最后三分钟,有点小激动..),看着前面大牛半个小时都搞完了,真心膜拜一下,代码 ...

  6. JS获取指定范围随机数

    常用取整数的方法 : Math.floor(Math.random() * (max - min + 1)) + min 一步步来解析: Math.random() 函数返回一个浮点,  伪随机数在范 ...

  7. 用C#控制台编写 推箱子之类的 坐标移动----之二维坐标

     //首先用枚举 列出方向  上,下,左,右(枚举的最后一位数后不用符号  否则会报错)        public enum dro    {       up = 1,        down = ...

  8. Java学习:通过Scanner读取文件

    Scanner不仅能够读取用户的键盘输入,还可以读取文件输入. 需要在创建Scanner对象的时候传入一个File对象作为参数.代码如下: import java.util.Scanner; impo ...

  9. J2EE WEB应用架构分析

    1. 架构概述 J2EE体系包括java server pages(JSP) ,java SERVLET, enterprise bean,WEB service等技术.这些技术的出现给电子商务时代的 ...

  10. 剑指offer-3:跳阶梯

    三.跳台阶 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析 青蛙每一次跳跃只有两种选择:一是再跳1级阶梯到达第n ...