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. 【Deep Learning Nanodegree Foundation笔记】第 0 课:课程计划

    第一周 机器学习的类型,以及何时使用机器学习 我们将首先简单介绍线性回归和机器学习.这将让你熟悉这些领域的常用术语,你需要了解的技术进展,并了解深度学习在更大的机器学习背景中的位置. 直播:线性回归 ...

  2. urllib:处理网络异常

    from urllib import request, error import ssl import urllib.request import socket import urllib.error ...

  3. 浅谈React工作原理

    浅谈React工作原理:https://www.cnblogs.com/yikuu/p/9660932.html 转自:https://cloud.tencent.com/info/63f656e0b ...

  4. HDU 3182 ——A Magic Lamp(思维)

    Description Kiki likes traveling. One day she finds a magic lamp, unfortunately the genie in the lam ...

  5. 使用iwebshop開發實現QQ第三方登錄

    $appid = "101353491"; $appkey = "df4e46ba7da52f787c6e3336d30526e4"; $redirect_ur ...

  6. 从入门到自闭之Python基础——函数初识

    1. 文件操作: 读操作: 格式:f = open("文件路径",mode = "r",encoding = "utf-8") f : 代表 ...

  7. Tarjan算法求有向图强连通分量并缩点

    // Tarjan算法求有向图强连通分量并缩点 #include<iostream> #include<cstdio> #include<cstring> #inc ...

  8. oracle三种表连接方式

    1. 排序合并连接(Sort Merge Join) 排序合并连接的执行过程如下所示: * 将每个行源的行按连接谓词列排序 * 然后合并两个已排序的行源,并返回生成的行源 例如: select * f ...

  9. 剑指offer 剪绳子

    题目描述 给你一根长度为n的绳子,请把绳子剪成m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x...xk[m]可能 ...

  10. 在springboot中集成mybatis开发

    在springboot中利用mybatis框架进行开发需要集成mybatis才能进行开发,那么如何在springboot中集成mybatis呢?按照以下几个步骤就可以实现springboot集成myb ...