`
xitong
  • 浏览: 6176755 次
文章分类
社区版块
存档分类
最新评论

awk 内置变量

 
阅读更多

awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是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

数组分隔符。将(I,J)转换为 I SUBSEP J, 模拟多维数组用

2、实例

1、常用操作

[gaoming@localhost~]$awk'/^root/{print$0}'/etc/passwd
root:x:0:0:root:/root:/bin/bash

/^root/为选择表达式,$0代表是逐行

2、设置字段分隔符号(FS使用方法)

[gaoming@localhost~]$awk'BEGIN{FS=":"}/^root/{print$1,$NF}'/etc/passwd
root/bin/bash

FS为字段分隔符,可以自己设置,默认是空格,因为passwd里面是:分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。

3、记录条数(NR,FNR使用方法)

[gaoming@localhost~]$awk'BEGIN{FS=":"}{printNR,$1,$NF}'/etc/passwd
1root/bin/bash
2bin/sbin/nologin
3daemon/sbin/nologin
4adm/sbin/nologin
5lp/sbin/nologin
6sync/bin/sync
7shutdown/sbin/shutdown
……

NR得到当前记录所在行

4、设置输出字段分隔符(OFS使用方法)

[gaoming@localhost~]$awk'BEGIN{FS=":";OFS="^^"}/^root/{printFNR,$1,$NF}'/etc/passwd
1^^root^^/bin/bash

OFS设置默认字段分隔符

5、设置输出行记录分隔符(ORS使用方法)

[gaoming@localhost~]$awk'BEGIN{FS=":";ORS="^^"}{printFNR,$1,$NF}'/etc/passwd
1root/bin/bash^^2bin/sbin/nologin^^3daemon/sbin/nologin^^4adm/sbin/nologin^^5lp/sbin/nologin

从上面看,ORS默认是换行符,这里修改为:^^,所有行之间用^^分隔了。

6、输入参数获取(ARGC,ARGV使用)

[gaoming@localhost~]$awk'BEGIN{FS=":";print"ARGC="ARGC;for(kinARGV){printk"="ARGV[k];}}'/etc/passwd
ARGC=2
0=awk
1=/etc/passwd

ARGC得到所有输入参数个数,ARGV获得输入参数内容,是一个数组。

7、获得传入的文件名(FILENAME使用)

[gaoming@localhost~]$awk'BEGIN{FS=":";printFILENAME}{printFILENAME}'/etc/passwd

/etc/passwd

FILENAME,$0-$N,NF不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。

8、获得linux环境变量(ENVIRON使用)

[gaoming@localhost~]$awk'BEGIN{printENVIRON["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使用)

[gaoming@localhost~]$awk'BEGIN{OFMT="%.3f";print2/3,123.11111111;}'/etc/passwd
0.667123.111

OFMT默认输出格式是:%.6g保留六位小数,这里修改OFMT会修改默认数据输出格式。

10、按宽度指定分隔符(FIELDWIDTHS使用)

[gaoming@localhost~]$echo20100117054932|awk'BEGIN{FIELDWIDTHS="422223"}{print$1"-"$2"-"$3,$4":"$5":"$6}'
2010-01-1705:49:32

FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS="422222"就表示$1宽度是4$22$32....。这个时候会忽略:FS分隔符。

11RSTARTRLENGTH使用

[gaoming@localhost~]$awk'BEGIN{start=match("thisisatest",/[a-z]+$/);printstart,RSTART,RLENGTH}'
11114
[gaoming@localhost~]$awk'BEGIN{start=match("thisisatest",/^[a-z]+$/);printstart,RSTART,RLENGTH}'
001

RSTART被匹配正则表达式首位置,RLENGTH匹配字符长度,没有找到为-1.

分享到:
评论

相关推荐

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

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

    Linux AWK内置函数

    该文档简单描述了一下AWK的内置函数。。。。

    awk内置变量

    在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串” “,这主要取决于变量应用的上下文。下面为变量的赋值负号列表: ...

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

    内置的变量和函数 可以把awk看作一门完全的程序设计语言,它处理文本的速度是快得惊人的。现在很多基于shell 日志分析工具都可以用它完成。设计简单,速度表现很好。 涉及到以上六个方面内容,我会在以后文章中加以...

    LINUX与UNIX_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 第...

    Linux与unix shell编程指南(1-16)

    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 第...

    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 第...

    shell 编程指南pdf

    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 第...

    LINUX与UNIX 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 第...

    LINUX 与 UNIX 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...

    Linux与unix 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 第...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    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 第...

    shell编程和unix命令

    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 第...

    linux与unix 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 第...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    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 第...

    LINUX与UNIX SHELL编程指南.rar

    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 第...

    Linux与unix shell编程指南1.rar

    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 第...

    LINUX与UNIX 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 第...

    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